Вот решение без VBA. Рекомендую, когда это что-то более редкое, чем ежемесячное задание.
Вот как вы настраиваете свои данные - обратите внимание, cols AD - это "новые 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.
Теперь вам просто нужно сделать отдельный поиск для вашей деятельности.
Как видите, вы получите дубликаты, но они могут быть легко обработаны. Мое предложение было бы - скопировать область AD в качестве значений в другое место назначения, а затем использовать встроенный ластик дубликатов на вкладке данных .
Конечно, вы могли бы сделать это с VBA, однако часто это задача, которую выполняют неопытные пользователи - и для создания безопасной для пользователя динамической версии этого достаточно некоторого кода, и для этого требуется гораздо больше деталей. Тем не менее, я хочу напомнить вам, что это базовая задача базы данных, и ее можно сделать намного проще с помощью функций базы данных.