Страницы: 1
RSS
Подсчет серий подряд идущих значений
 
Всем привет!

Подскажите кто-нибудь, пожалуйста, как реализовать следующую вещь - есть столбец с множеством чисел положительных и отрицательных. Надо посчитать серии подряд идущих значений (положительных или отрицательных - неважно). То есть, например, посчитали и получилось, что было 15 серий по 8 отрицательных чисел подряд, 20 серий по 7 отрицательных чисел подряд и так далее. Не знаю как еще объяснить. Начиная с максимально возможной серии, которая была в столбце, и заканчивая, выходит, серией из одной ячейки
 
День добрый! Посмотрите в приёмах, может Ваш вариант.
И лучше файл с примером прикладывать. Это многократно ускоряет и упрощает помощь.
 
Евгений, без примера .. https://excel2.ru/articles/podschet-podryad-idushchih-znacheniy-v-ms-excel
https://www.planetaexcel.ru/techniques/2/4033/
Изменено: Mershik - 26.04.2019 12:48:49
Не бойтесь совершенства. Вам его не достичь.
 
Спасибо! Помогли примеры с победной серией. Только они высчитывают максимальную серию, а как высчитать  серии поменьше?
Изменено: Евгений - 26.04.2019 13:25:01
 
Вот, приложил пример. В столбце С идут числа положительные и отрицательные, (есть и нули, но они мне не важны, потому как их можно принимать как за  положительные так и за отрицательные значения, поэтому их просто заменю на больше 0, посчитаю, потом на меньше и снова посчитаю). Соответственно надо в столбце  С высчитать вот эти серии положительных или отрицательных значений.
 
Цитата
Евгений написал:
Вот, приложил пример
Это тот, который в предыдущем посте?
 
Цитата
Лунтик написал:
Это тот, который в предыдущем посте?
да
 
Доброе время суток
Цитата
Евгений написал:
Надо посчитать серии подряд идущих значений (положительных или отрицательных
Вариант
 
Цитата
Андрей VG написал:
Вариант
Я, если честно, вообще ничего не понял. Не могли бы вы пояснить немного, а то я не увидел там то, что мне нужно
 
Цитата
Евгений написал:
а то я не увидел там то, что мне нужно
Вы не поверите, но никто на форуме так и не увидел в вашем файле - что вам нужно. Поэтому и тишина...
 
Цитата
Андрей VG написал:
никто на форуме так и не увидел в вашем файле - что вам нужно
Если бы там было то, что мне нужно, я бы сюда не обращался. В теме я описал максимально проблему, и в сообщении выше, как еще пояснить?
 
Цитата
Евгений написал:
как еще пояснить?
Цитата

2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе
максимально следовать правилам. Где то, что вы хотите видеть на выходе?
В представленной сводной дан номер серии и количество значений серии. Что не так?
Изменено: Андрей VG - 27.04.2019 11:25:50
 
Как реализовать? Макросом.
Логика примерно такая: если число n = n-1 то x = x+1, где: "n" это текущие число, "n-1"  - предыдущие,  а "x"  это счетчик т.е. длинна серии.
Если x>1 то что-то делаем с "x" и "n".
Изменено: PDO - 27.04.2019 11:28:35
 
Цитата
Андрей VG написал:
Где то, что вы хотите видеть на выходе?
Ну так подскажите мне как это сделать. Как мне показать, что я хочу на выходе? По-моему тут только описать словами можно
 
Цитата
PDO написал:
Как реализовать? Макросом.Логика примерно такая: если число n = n-1 то x = x+1, где: "n" это текущие число, "n-1"  - предыдущие,  а "x"  это счетчик т.е. длинна серии.Если x>1 то что-то делаем с "x" и "n".
Я ничего не понял. С макросами у меня вообще туго. Либо подскажите готовый макрос, либо мне это не подходит
 
Цитата
Евгений написал:
Как мне показать, что я хочу на выходе?
Вы показали только исходные данные, нужно ещё показать желаемый результат: где и в каком виде Вам всё это нужно отобразить.
И для этого в примере не нужно столько строк: 4232.
 
Цитата
Андрей VG написал:
В представленной сводной дан номер серии и количество значений серии. Что не так?
Если вы о вашем варианте, то я говорю, я не вижу там решения. Где там количество серий? Например, сколько раз было 10 отрицательных значений подряд?
 
Цитата
Евгений написал:
Ну так подскажите мне как это сделать. Как мне показать, что я хочу на выходе?
Составить пример не 4000 строк, а на 20-40. И ручками, считая пальцем по экрану, например, вбить то, что вы хотите видеть там где это вы хотите видеть.
Изменено: Андрей VG - 27.04.2019 11:48:33
 
Вот так
 
Так бы сразу. Версия Power Query+сводная.
Изменено: Андрей VG - 27.04.2019 12:56:42
 
Отлично, только как теперь этим пользоваться? У меня данных на 150 000 строк, куда мне их скопировать, чтобы все посчитать?
 
Цитата
Евгений написал:
как теперь этим пользоваться
Аккуратно скопировать новые данные в умную таблицу и обновить сводную. Не забыть пройти по ссылке выше и почитать про Power Query.
 
как обновить таблицу?
 
Правая кнопка мыши по ячейке таблицы - пункт "Обновить".
Владимир
 
Всем спасибо! За помощь и проявленное терпение с таким нубом как я. Все работает как надо
 
Успехов!
Владимир
 
Добрый день!  Я видимо совсем тупой. Мне нужно тоже самое сделать) Я взял файл и попытался там свои данные воткнуть. На 3 листе данные свои ставить?? Дело в том, что даже с теми данными что идут в примере, при обновлении ( я так понимаю надо находится на листе pivot1) пишет сбой инициализации источника данных.

захожу выбираю источник for Pivot1 или for Pivot2 и все равно ошибка инициализации....в чем проблема, подскажите?

И Спасибо за помощь

Офис 2010 стоит. может из-за версии проблема?

Обновил офис и все заработало. Прошу прощения!! Спасибо и всех с праздником)
Изменено: Orange2000 - 28.04.2019 19:17:09
 
Данные вставляете в таблицу на листе "2019.4.25 (1)". Собственно Power Query работает только со столбцом f3 (все остальные столбцы исключаются сразу). Проверьте, что таблица имеет размер именно ваших данных.
Далее обновляете сводную на листе Pivot (1). Там обычная сводная. Модели данных в этом файле я не делал. На всякий случай код Power Query. Можете в своём файле в расширенном редакторе его вставить
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content][[f3]],
    addGroupCol = Table.AddColumn(Source, "sign", each Number.Sign([f3]), Int64.Type)[[sign]],
    calcLocalCount = Table.Group(addGroupCol, {"sign"}, {"count", each List.Count([sign]), Int64.Type}, GroupKind.Local),
    countGroup = Table.FromColumns({{1..(List.Max(calcLocalCount[count]))}}, {"count group"}),
    result = Table.Group(calcLocalCount, {"sign"}, {"temp", each Table.Join(countGroup, {"count group"}, _, {"count"}, JoinKind.LeftOuter)}),
    #"Expanded {0}" = Table.ExpandTableColumn(result, "temp", {"count group", "count"}, {"count group", "count"})
in
    #"Expanded {0}"

Естественно, если у вас таблица называется не Таблица1, то имя нужно будет поменять. Аналогично, если поле не f3, то вписываете своё. Далее создаёте сводную, указав внешний источник - имя созданного запроса Power Query.

P. S. А Power Query (не Power Pivot!) у вас установлен?
Изменено: Андрей VG - 28.04.2019 19:08:06
 
Андрей, спасибо  и прошу прощения, за беспокойство. Установил офис 2016 и все заработало как надо) Стоял 2010 офис.

С праздником!
Страницы: 1
Наверх