Excel - Найти все идентичные ячейки, суммировать отдельные ячейки в строке для совпадений, вывести на другой лист - PullRequest
0 голосов
/ 29 сентября 2018

Итак, я искал ответ на этот вопрос, но ничего не могу найти.Надеюсь, у некоторых гуру Excel есть простой ответ.

КОНТЕКСТ

У меня есть лист с двумя столбцами;список кодов аэропортов (Col A) и список топливных галлонов (Col B).Столбец A содержит множество повторяющихся записей, столбец B всегда отличается.По сути, это огромный список мероприятий по заправке самолетов с течением времени в разных аэропортах.Аэропорты могут быть одинаковыми, потому что это одна строка для каждого события заполнения.

ПРОБЛЕМА

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

ДРУГОЕ СОСТАВ

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

Все ответы, которые я нахожу, «создать список ссылок на отдельном листе», и это приводит меня в движениесумасшедший!

Заранее спасибо за любую помощь!

-rt

1 Ответ

0 голосов
/ 29 сентября 2018

Звучит, что вам нужна версия формулы удаления, продублированная для столбца A, и простая сумма для столбца B.

Столбец A

=IFERROR(INDEX(Data!A$1:A$1000,SMALL(IF( MATCH(Data!A$1:A$1000,Data!A$1:A$1000,0)=ROW(Data!A$1:A$1000),ROW(Data!A$1:A$1000)),ROW())),"")

Array Formula , поэтому, пожалуйста, нажмите Ctrl + Shift + Enter , чтобы завершить его.После этого вы можете увидеть {} вне формулы.

Столбец B

=SUMIF(Data!A$1:A$1000,A2,Data!B$1:B$1000)

Просто измените диапазон для ваших данных.

Напоминания: Формула в столбце A должна начинаться с Row#1, или вам необходимо добавить некоторую константу смещения для корректировок.

Поскольку возвращаемое значение MATCH() представляет позицию ключа в данном массиве.Если мы хотим, чтобы он был равен номеру строки, мы должны добавить некоторую константу, если массив не начинается с ROW#1.Таким образом, настройка данных в Range(B3:B1000) ниже.

=IFERROR(INDEX('Event Data'!B$3:B$1000,SMALL(IF(
 MATCH('Event Data'!B$3:B$1000,
 'Event Data'!B$3:B$1000,0)+2=ROW('Event Data'!B$3:B$1000),
 ROW('Event Data'!B$3:B$1000)),ROW())-2),"")

Более того, диапазон должен точно соответствовать диапазону данных.Если вам нужно больше, чем диапазон данных для расширения в будущем, в формулу следует добавить IFERROR().

=IFERROR(INDEX('Event Data'!B$3:B$1000,SMALL(IFERROR(IF(MATCH(
 'Event Data'!B$3:B$1000,'Event Data'!B$3:B$1000,0)+2
 =ROW('Event Data'!B$3:B$1000),
 ROW('Event Data'!B$3:B$1000)),FALSE),ROW())-2),"")

Наконец, я действительно рекомендую вам использовать встроенный в Excel Remove Duplicated, так какФормула массива составляет около O (n ^ 2) сложности времени и использования памяти.И каждый раз, когда вы вводите какие-либо данные даже в другие ячейки, он автоматически пересчитывает все формулы, когда опция вычисления в вашем Excel автоматически. Это снизит производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...