如何在Excel中使用variables来使用Vlookup中的For循环来标识单元格

1)我的目标是以下一个:

用“Monitorato”或“Non Monitorato”的条件语句replace单元格的内容。 确定语句types的条件是Vlookup函数的输出。 如果vlookup发现一个值我会有“Monitorato”,而如果这没有发生,我会有“非Monitorato”。

2)通过使用传统的Excel函数 ,解决了这个问题:

=IF(ISNA(VLOOKUP(cell to look for, range, column, false)),"Non Monitorato","Monitorato")

然后,我将这个公式复制并粘贴到我编写初始公式之下的所有单元格中

3)但是我想用VBA来实现这个东西。

而且还有一个额外的问题。 数据实际上是过滤的,所以我只需要在过滤的数据上使用Vlookup函数。 Vlookup函数应该查找数据集中的第一个可见单元格。

4)我写的可怕的代码是下面的代码:

 Sub MyFunction() Dim i As Long Dim LastRow As Long Dim FirstRow As Long Dim Header As Range Set Header = Range("d1") FirstRow = Range(Header.Offset(1, 0), Header.End(xlDown)).SpecialCells(xlCellTypeVisible).Cells(1).Count LastRow = ActiveSheet.UsedRange.Rows.SpecialCells(xlCellTypeVisible).Count For i = FirstRow To LastRow Sheets(1).Cells(FirstRow, 5) = Application.WorksheetFunction.VLookup(Sheets(1).Cells(i, 3), Sheets(1).Range("C2:D100"), 2) Next i End Sub 

我得到的错误是

无法获取工作表函数类的vlookup属性

我想解决它,但我也知道必须有一个更容易的解决scheme的问题…

谢谢你们!

当前的代码实际上有几个问题,它不会完成你以后的事情。 看看这段代码是否适合你:

 Sub Monitorato() Dim ws1 as Worksheet Set ws1 = Sheets(1) Dim rLookup As Range, rCell as Range With ws1 Set rLookup = .Range(.Range("D1"),.Range("D1").End(xlDown)).SpecialCells(xlCellTypeVisible) For each rCell in rLookup If Not .Range("C2:D100").Find(rCell.Offset(,-1).Value2) Is Nothing Then rCell.Offset(,1).Value = "Monitorato" Else rCell.Offset(,1).Value = "Non-Monitorato" End If Next End With End Sub`