вот решение без VBA. Рекомендовал бы его, когда это что-то более редкое, чем ежемесячная задача.
это, как вы настроить ваши данные - Примечание, cols A-D являются "новые cols".
вот формулы - установите их на строку 2, затем скопируйте:
A2=IF(ISBLANK(F2),INDEX(J:J,ROW()-COUNTIF(F:F,"*")+1),F2)
B2=IFERROR(T(VLOOKUP($A2,$F:$H,2,FALSE)),"")
C2=IFERROR(T(VLOOKUP($A2,$F:$H,3,FALSE)),"")
D2=IFERROR(T(VLOOKUP($A2,$J:$K,2,FALSE)),"")
A2
заполняет все имена из текущей таблицы действий, пока не получит пустые ячейки. Затем вы начинаете заполнять имена из вашей новой таблицы активности, использование COUNTIF
получить количество непустых ячеек и ROW
и +1
чтобы получить правильный INDEX
/ Name.
теперь вы просто должны сделать отдельные поиски для вашей деятельности.
как видите, вы получите дубликаты, но с ними легко справиться. Мое предложение было бы-скопируйте область A-D в качестве значений в другое место назначения, а затем используйте встроенный дубликат ластика из data tab.
конечно, вы могли бы сделать это с VBA, однако часто это задача, которую выполняют неопытные пользователи - а для создания безопасной для пользователя динамической версии этого достаточно некоторого кода и нужно сделать намного больше конкретики. Тем не менее, я хочу напомнить вам, что это базовая задача базы данных, и ее можно сделать намного проще с помощью функций базы данных.