#excel #vba
Вопрос:
В основном я отфильтровал некоторые данные, и теперь я пытаюсь автоматически заполнить видимые ячейки формулой vlookup (отфильтрованные). После этого я копирую и вставляю в качестве значений. Я не уверен, как это сделать, так как это не работает:
MasterList.Columns(3).ClearContents
MasterList.Range("C1").Value = "Client Name"
MasterList.Range("C2").SpecialCells(xlCellTypeVisible).Formula = "=VLOOKUP(F2,'Reporting Here'!A:F,5,FALSE)"
MasterList.Activate
MasterList.Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C" amp; RowCountTotal)
'copy and paste as values
MasterList.Range("C2:C" amp; RowCountTotal).Copy
MasterList.Range("C2:C" amp; RowCountTotal).PasteSpecial xlPasteValues
Я не думаю, что этот ряд работает:
MasterList.Range("C2").SpecialCells(xlCellTypeVisible).Formula = "=VLOOKUP(F2,'Reporting Here'!A:F,5,FALSE)"
Как скопировать и вставить формулы vlookup только в видимые ячейки после фильтрации?
Комментарии:
1. Возможно, я не понимаю, что вы пытаетесь сделать или какая часть не работает, но: сработает ли это, если вы сделаете что-то вроде ‘masterList.Range(«C2»).Copy’, а затем ‘masterList.Range(«C2:C» amp; RowCountTotal). Специальные ячейки(xlCellTypeVisible). Специальные пасты xlPasteFormulas’ ?
2. Я пытаюсь автоматически заполнить vlookup только для видимых ячеек после фильтрации. Когда я запускаю то, что вы сказали, я получаю 1004 : «Не удалось выполнить метод автозаполнения класса диапазона».
3. Ага, упс! Спасибо @orange123.
Ответ №1:
Видимые Ячейки
Dim rg As Range
Set rg = MasterList.Range("C2:C" amp; RowCountTotal) _
.SpecialCells(xlCellTypeVisible)
rg.Formula = "=IFERROR(VLOOKUP(F2,'Reporting Here'!A:F,5,FALSE),"""")"
Dim arg As Range
For Each arg In rg.Areas
arg.Value = arg.Value
Next arg