1)我的目标如下:
使用条件语句替换单元格的内容,该条件语句是" Monitorato"或"非Monitorato"。确定语句类型的条件是Vlookup函数的输出。如果vlookup找到了我将拥有的价值" Monitorato",如果不发生这种情况,我会有" Non 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属性
我想解决它,但我也知道必须有一个更容易解决问题的方法......
谢谢大家!
答案 0 :(得分:1)
目前的代码实际上有几个问题,它无法实现您的目标。看看这段代码是否适合你:
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`