У меня есть лист "2018" и "2019", который я создал ранее. 2019 отличается от 2018 только тем, что в него могут быть добавлены некоторые строки и / или некоторые удалены.
Сформируйте ячейку "A3" и ниже, у меня есть перечисленные навыки и "X" в столбцах после того, если этот навык принадлежит человеку, которому принадлежит столбец.
Теперь мне нужно заполнить столбцы 2019 года известным X с формулой ниже, сначала немного кода контекста для части выбора диапазона:
Dim rng As Range
Dim rngbegin As Range
Dim rngend As Range
Dim newrng As Range
Sheets("2018").Activate
Set rng = Application.InputBox '...and rest of the code
rng.Copy
Sheets("2019").Range("B:B").Insert Shift:=xlToRight
Sheets(2019).Activate
Set rngbegin = rng.Cells(3, 1)
Set rngend = rng.Cells(3000, rng.Columns.Count)
Set newrng = Range(rngbegin.Address & ":" & rngend.Address)
newrng.ClearContents 'To clear everything in the difined range but the headder rows
Вот формула, которую я мог бы использовать, если бы столбцы не менялись.
Range("B3").Select
ActiveCell.Formula = "=IFERROR(LOOKUP(2,1/($A3='2018'!$A$3:D$5000),'2018'!$B$3:$B$5000),"")"
Range("B2").AutoFill Destination:=Range("B2:B" & Range("A" & Rows.Count).End(xlUp).Row)
Формула работает, но у меня есть следующие проблемы:
1 - Обязательно ) Я не могу жестко задать формулу для каждого столбца, поскольку количество столбцов может измениться. (Я сохраняю количество столбцов в качестве диапазона var, выбранного пользователем через application.inputbox - вот как я вставил столбцы в новый лист 2019 года)
2 - необязательно) Я жестко закодировал строки в намного большее число, чем используется, потому что я не счел нужным подсчитать столбец A, а затем использовал range.count.Address (?) В качестве конца вектора поиска. Просто пришла мне в голову LOL