我在宏的公式中使用vlookup。但如果它适用于包含超过90k行的纸张,则需要花费太多时间。
相反,我喜欢使用find或Instr方法来减少时间。但是如果我使用“find:方法,我会收到错误。我不知道如何使用”Instr“
Sub testt()
Dim l As Long
l = Sheets(1).Range("A1:A" & Sheets(1).Cells(Sheets(1).Rows.Count, "A").End(xlUp).Row).Count
With Sheets("Sheet1")
.Range("d1").Formula = "=IF(iferror(vlookup(c1,$D:$D,1,false),"""")="""","""",1)"
.Range("d1").AutoFill Destination:=Range("d1:d" & l), Type:=xlFillDefault
End With
End Sub
这是我的vlookup公式。但我需要用find
替换vlookupl = Sheets(1).Range("A1:A" & Sheets(1).Cells(Sheets(1).Rows.Count, "A").End(xlUp).Row).Count
With Sheets("Sheet1")
.Range("d1").Formula = "=IF(iferror(range("A1:A" & l).find(c1),"""")="""","""",1)"
.Range("d1").AutoFill Destination:=Range("d1:d" & l), Type:=xlFillDefault
End With
答案 0 :(得分:0)
我知道Excel中没有FIND功能。但是,您可以编写VBA函数以查找查阅列中的每个相关单元格。以下是相关的代码:
Function IfFound(SearchText As String) As String
Dim FoundCell As Range
'look in particular column for a value
Set FoundCell = Columns("A:A").Find(What:=SearchText, lookat:=xlWhole)
'if found, return value in cell to its right
If FoundCell Is Nothing Then
IfFound = ""
Else
IfFound = FoundCell.Offset(0, 1).Value
End If
结束功能
以下是您可以称之为:
Sub TestFunction()
'make sure word TEST is in column A somewhere
MsgBox IfFound("test")
End Sub
不确定这是否是您正在寻找的,但它的运行速度比VLOOKUP快得多。唯一的问题是,无论何时工作表中发生任何变化,您都必须找到一种方法来自动运行它。