Вспомогательный столбец, чтобы уйти от формулы массива - PullRequest
0 голосов
/ 28 октября 2019

У меня есть формула массива, чтобы выбрать различные значения в списке. Однако из-за того, что список иногда превышает 15 000 строк, формула массива очень медленная. Есть ли способ, которым я могу добавить вспомогательный столбец, чтобы ускорить процесс? (Я не могу использовать сводную таблицу для этого)

Итак, у меня есть список, начинающийся с B2, со значениями, такими как 01.01, 01.02, 02.04, 04.08 и т. Д. (Мой список отсортирован от наименьшего к наибольшему вэтот столбец). Каждое из этих значений может встречаться более 500 раз. Название моего списка - TaskCode. Я использовал формулу массива {=INDEX(TaskCode,MATCH(0,COUNTIF($C$1:C1,TaskCode),0))}, а также нашел правильную формулу =INDEX(TaskCode,MATCH(0,INDEX(COUNTIF($C$1:C1,TaskCode),0,0),0)). Оба они довольно медленные, особенно когда вы начинаете получать 20 и 30 тысяч строк. Я также подумал об использовании столбца вхождений =COUNTIF($C$1:C1,C1) (перетаскиваемого вниз), а затем выбрал 1. Тем не менее, я не знаю лучшего способа быстрого выбора единиц.

В любом случае, любая помощь по ускорению этого процесса будет принята с благодарностью.

1 Ответ

0 голосов
/ 28 октября 2019

Я бы добавил вспомогательный столбец "ID" с формулой:

=IF(ISNA(MATCH($B2,$B$1:$B1,0)), MAX($C$1:$C1)+1,"")

Это должно быть быстрее, поскольку каждая ячейка смотрит только на диапазон ячеек выше, а не на весь "TaskCode"column.

Затем можно использовать статический идентификатор вместе с INDEX / MATCH, чтобы получить отдельный список кодов задач:

enter image description here

ДАЖЕ ЛУЧШЕ

Если вы можете быть уверены, что ваши коды задач ВСЕГДА отсортированы от наименьшего к наибольшему, вам когда-либо придется проверять ячейку сразу выше:

=IF($B2=$B1,"", MAX($C$1:$C1)+1)

enter image description here

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