Как автоматически заполнять ячейки только для видимых?

#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