Вопрос знатокам Екселя

kozicin

как преобразовать длинные числа в сокращения?
типа 352 521 = 352К
12 621 325 =12M
6 582 000 521 = 6.58B

kill-still

формулу напиши, чО.

kozicin

давай в студию
если бы знал че написать, не стал бы спрашивать

stm4836248

Ебать. Даже я бы постыдился такое спрашивать.

kozicin

всем спасибо
очень помогли

kill-still

A1: 12621343
B1: =ОКРВНИЗ(LOG10(A1)/3;1)
C1: =ОКРВНИЗ(A1/СТЕПЕНЬ(10;B1*3);1)
D1: =ЕСЛИ(B1=2;"M"; ЕСЛИ(B1=1;"К"
E1: =СЦЕПИТЬ(C1;D1)
при желании можно всё в одну упихать.
совсем обленился на старости?

kozicin

демон

saveliev_a

Ты специально сделал с логарифмами, чтобы круче выглядело?

kill-still

валяй, предлагай свой вариант.
ну, альтернативно одарённые могут ещё могут перевести в строку и посчитать количество символов. :lol:

saveliev_a

валяй, предлагай свой вариант.
Сравнивать не логарифмы, а сами числа.

kozicin

ат души
=IF(AND(Q6>1000,Q6<999999ROUND(Q6/1000,0)&"K",IF(AND(Q6>1000000,Q6<999999999ROUND(Q6/1000000,1)&"M",IF(AND(Q6>1000000000,Q6<999999999999ROUND(Q6/1000000000,2)&"B",Q6  

kill-still

не, так надёжнее. с ноликами ещё ошибусь вдруг. я же только до 10ти считать умею. :crazy:

kill-still

олсо можно ещё масочку забульбенить бы было. тогда можно было бы её прямо на ячейку повесить.

saveliev_a

Ладно, пошутили и хватит. Правильный ответ — воспользоваться форматом ячеек. Ексель прекрасно умеет форматировать числа.
[>=1000000]0,00  "М";[>=1000]0,00 "К";0,00

kozicin

не, когда тебе надо потом эту фицирю забубенить формат ячейки не поможет. надо чтобы наполнение ячейки было правильным

kozicin

кстати не работает
на 8-мизначное число просто повторила тоже число и М добавила

PlacEfff

У меня тоже вопрос есть
Задача. Проверить к какому интервалу принадлежит значение. Интервалов 6. Задаются они путем деления отрезка тремя известными точками. Соответственно, если значение ближе к какой-то точке, то на выходе должна выдаваться цифра-1, 2 или 3 в зависимости от значения.
Я вот, что придумал, хотя понимаю, что это очень мудрено
=ЕСЛИ(M5<E12;1; ЕСЛИ(E12<M5<(E13-E12)/2;1;ЕСЛИE13-E12)/2<M5<E13;2;ЕСЛИ(E13<M5<(E14-E13)/2;2;ЕСЛИE14-E13)/2<M5<E14;3; ЕСЛИ(M5>E14;3;0
То есть проверяется истинность и, если утверждение ложно, то запускается следующая функция. Но почему-то получается ошибка-всегда, при любых значениях будет ложь.
Тоже самое, если например сделать функцию проще
=ЕСЛИ(M5>E14;3;ЛОЖЬ). тоже будет ложь. Что делать то? :confused:

PlacEfff

=ЕСЛИ(M5>E14;3;ЛОЖЬ). тоже будет ложь. Что делать то?
С этим все понял. 3 надо было в кавычки брать. А вот с большой формулой все равно не ясно.

PlacEfff

Все. разобрался. Похоже в экселе нет понятия двойного неравенства. Пришлось еще одну функцию воткнуть. Получилось такое
=ЕСЛИ(M5<=E12;"1";ЕСЛИ(И(E12<=M5;M5<E13-E12)/2+E12;"1";ЕСЛИ(ИE13-E12)/2+E12)<=M5;M5<=E13);"2";ЕСЛИ(И(E13<=M5;M5<E14-E13)/2+E13;"2";ЕСЛИ(ИE14-E13)/2+E13)<=M5;M5<=E14);"3";ЕСЛИ(E14<=M5;"3";"0"
Хотя, я считаю, что громозко, конечно.

suid

получается точек 2, а интервалов 3?
f12: =E12+(E13-E12)/2
f13: =E13+(E14-E13)/2
в итоге IF(M5<=F12;1;IF(M5>F12;IF(M5<=F13;2;IF(M5>F13;3;44

PlacEfff

нет. типа 3 точки, надо
1. Понять, к какому интервалу относится известное значение
2. Понять к какой точке лежит ближе это значение в этом интервале.

SergZ495

это же надо так через анус написать условие задачи, а потом еще через такую жопу формулу.
5 минут сидел втыкал.
в итоге правильная формула выглядит так:
=ЕСЛИ(M5<(E12+E13)/2;1;ЕСЛИ(M5<(E13+E14)/2;2;3
решение это тоже жесть какая-то, что за 44 ? Ну т.е. я понимаю что это когда точка попадает ровно на границу интервала но поскольку условием это не оговорено нужно считать что это непринципиально или невозможно в силу специфики исходных данных.

suid

тогда почему на выходе 3 параметра?

PlacEfff

Ну как же.

Filan

LOL!
Тогда тебе нужны в условии всего 2 точки - 1.5=(1+2)/2 и 2.5=(2+3)/2.
И только их использовать в условии. Ну и определиться к чему относить значение в самих точках 1.5 и 2.5.

PlacEfff

ну это было бы так, если бы не предусматривался случай совпадения значения с точкой. Впрочем, как я уже написал-все уже работает.

saveliev_a

не, когда тебе надо потом эту фицирю забубенить формат ячейки не поможет. надо чтобы наполнение ячейки было правильным
Не понял, что ты хотел сказать. Попробуй другими словами, плз.

saveliev_a

кстати не работает
на 8-мизначное число просто повторила тоже число и М добавила
Может быть, ты с пробелами ошибся. Ну или у тебя разделитель тысяч другой.

SergZ495

например если он хочет вставить это число в текстовую строку в данном формате через функцию "сцепить"

saveliev_a

Спасибо. Думаю, что для этого подойдет формула TEXT.

tucha96

плюсую
знатоки экселя не понимаюшие форматов ололо

tucha96

плюсую еще раз
вот к чему интуитивные интерфейсы приводят!

PlacEfff

Как бе еще один вопрос возник
Из-за чего глюк
=ЕСЛИ(B12=B1;1;0) отображает всегда 0.
где B12=ПСТР($F$13;3;4 а B1 просто число. Причем они заведомо равны.
B12 же получена из считывания строчки, где как раз это число фигурирует.

SergZ495

хехе
сделай так B12=ПСТР($F$13;3;4)+1-1
или так:
=ЕСЛИ(B12-B1=0;1;0)

PlacEfff

Хм. Помогло. Спасибо. Хотя я уже колдовал с форматами ячеек
Оставить комментарий
Имя или ник:
Комментарий: