Страницы: 1
RSS
подсчет количества отрицательных/положительных значений
 
Здравствуйте уважаемые форумчане! Помогите пожалуйста пожилому человеку, недавно познакомившемуся с этой чудесной программой упростить ручную работу. Тему через поисковик находила, спрашивали тоже самое, но ответа там нет. Может это слишком сложно? В первой колонке примера числа, а во второй - как я их считаю руками. Знак числа во второй колонке говорит о том, количество положительных или отрицательных значений подряд подсчитывалось.
 
Mapkys, добрый вечер!
Вам, наверное, было бы более понятно формульное решение и завтра Вам, скорее всего, напишут формулу дающую нужный результат.
Я же предложу решение на Power Query. Но есть требование к версии офиса, должен быть от 2016 и старше(
В первый столбец помещаете числа, которые нужно посчитать. Нажимаете правой кнопкой мыши на оранжевой таблице, нажимаете обновить. В ней будут необходимые вам посчитанные последовательности идущих подряд чисел с одинаковым знаком.

Может Вы и недавно познакомились с программой, но задачу обясняете и пример готовите получше многих тут  :D

На код можете внимание не обращать, это так, для истории  :)
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Числа"]}[Content],
    ИзмененныйТип = Table.TransformColumnTypes(Источник,{{"Числа", type number}}),
    Group = Table.Group(ИзмененныйТип, "Числа", {"Счет", 
            (x)=> let 
                a = Table.AddColumn(x, "Счет_", each Table.RowCount(x)) ,
                b = if x[Числа]{0} <0 then -1 else 1,
                c = List.Count(x[Числа])*b,
                d = Table.FromColumns({x[Числа],{c}})
                     in
                d 
            }, 
            GroupKind.Local, (s,c)=> Number.From (Number.Sign(s)<> Number.Sign(c))),
    Combine = Table.Combine(Group[Счет]),
    Переименование = Table.RenameColumns(Combine,{{"Column1", "Числа"}, {"Column2", "Счет"}})
in
    Переименование
Изменено: whateverlover - 06.10.2022 23:07:24
 
Массивные
=SIGN(A1)*MATCH(1=1;SIGN(A1)<>SIGN(A2:A32);)
=IF(SIGN(A2)<>SIGN(A1);SIGN(A2)*MATCH(1=1;SIGN(A2)<>SIGN(A3:A33););"")
По вопросам из тем форума, личку не читаю.
 
Здравствуйте.
Попробуйте формулу массива
Код
=ЕСЛИ(ЗНАК(A1)=ЗНАК(A2);"";ЗНАК(A2)*(ПОИСКПОЗ(ЛОЖЬ;ЗНАК(A2:A22)=ЗНАК(A2);)-1))
Изменено: gling - 06.10.2022 23:29:50
 
Огромное Вам спасибо за помощь! Формула из последнего примера мне подошла, и теперь сэкономит массу времени и нервов. Успехов всем и мирного неба!
Страницы: 1
Наверх