Страницы: 1
RSS
Подсчет количества уникальных контейнеров в поезде
 
Доброго времени суток всем.
В примере имеется таблица для занесения номеров контейнеров и номеров поездов. На деле, таблица уже разрослась до 10000 строк и, понятное дело, есть повторы контейнеров. На основе таблицы ведется сводная, для подсчета количества контейнеров в конкретном поезде. Для избавления от дублирования информации, я использую формулу
Код
 =ЕСЛИ(СУММПРОИЗВ(($A$2:A2=A2)*($B$2:B2=B2))=1;1;0).
В сводной таблице делал делал группировку по поездам, а в значениях указывал сумму по этому столбцу - получал кол-во уникальных контейнеров в конкретном поезде.
Сейчас таблица разрослась и данная формула оооочень долго вычисляется, тем более на слабом офисном компьютере. Можете подсказать какую-нибудь более легкую формулу, чтобы облегчить задачу для ПеКа и сократить время вычислений?
 
Если так:
Код
=IF(AND(A2=A1;B2=B1);0;1)

Хотя, наверное, при другой структуре данных, не будет корректно работать... Если, конечно, предварительно данные отсортировать сначала по номеру контейнера, а потом по номеру поезда, то в общем-то сработает и на большом массиве.

Изменено: turbidgirl - 16.08.2019 10:47:08
 
turbidgirl, да, вы правы. Такая формула точно не подойдет. В рамках этих 5 строчек да, но если добавить буквально пару новых вариантов, то формула не будет выдавать желаемый результат.
 
Добрый день!

Можно вывести напротив каждого поезда количество уникальных контейнеров
 
Arturus, спасибо за идею. Обязательно сравню по скорости работы.
 
Если формула =ЕСЛИ(СУММПРОИЗВ(($A$2:A2=A2)*($B$2:B2=B2))=1;1;0). устраивала, то её заменит более быстрая
=IF(COUNTIFS(A$1:A2;A2;B$1:B2;B2)=1;1;0)
Ну а в целом можно сделать запросом SQL или PQ
По вопросам из тем форума, личку не читаю.
 
БМВ, countifs это счетеслимн?
PQ я только начал изучать и ничего большего, чем просто сбор табличек в одну пока не освоил :( Спасибо за отклик, попробую вашу формулу.
 
Цитата
БМВ написал:
или PQ
Код
let
    from = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    group = Table.Group(from, {"Номер КНТ", "Поезд"}, {{"Дубли", each _, type table}}),
    to = Table.SelectColumns(group,{"Номер КНТ", "Поезд"})
in
    to
Соблюдение правил форума не освобождает от модераторского произвола
 
Ну тогда уж и SQL для комплекта
Код
SELECT DISTINCT Поезд, Count(`Номер КНТ`) AS 'Count of Номер КНТ'
FROM `Лист1$`
GROUP BY Поезд
ORDER BY Поезд

только надо путь к файлику в соединении поменять
Изменено: БМВ - 16.08.2019 16:18:01
По вопросам из тем форума, личку не читаю.
 
БМВ, buchlotnik, добрый день. Спасибо вам огромное за отзывчивость. Не было времени все попробовать, как текучку разгребу - обязательно отпишусь )))  
 
buchlotnik, хозяйкам на заметку, можно сразу так:
Код
let
    from = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    group = Table.Group(from, {"Номер КНТ", "Поезд"}, {}),
in
    group

Правда так "кнопочность" кода пропадает.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх