我正在尝试运行此代码:
Private Sub CommandButton1_Click()
Dim Row_A As Integer, Row_B As Integer, Is_Copy As Boolean
Is_Copy = False
For Row_A = 1 To 850
For Row_B = 1 To 10840
Is_Copy = IsNumber(Search(Cells(Row_A, 1), Cells(Row_B, 2), 1))
If Is_Copy Then Cells(Row_B, 2).Interior.Color = RGB(255, 0, 0)
If Is_Copy Then Cells(Row_B, 3).Value = Is_Copy
If Is_Copy Then Cells(Row_B, 4).Value = Row_A
If Is_Copy Then Cells(Row_B, 5).Value = Row_B
Is_Copy = False
Next Row_B
Next Row_A
End Sub
但我得到一个弹出窗口说:
“编译错误:Sub或Function not defined”
然后突出显示第1行和第7行搜索。
我需要做些什么来解决这个问题?
我想解决的问题: 我有两个UID列表,我只是比较它们中的两个,但是列b在末尾有3个额外的字符,所以我使用搜索来检查列b是否包含列A.
答案 0 :(得分:1)
Search
不是VBA中的函数。除非你有一个具有该名称的UDF,否则代码将抛出错误。
答案 1 :(得分:0)
我一直在使用这种功能,在以前的SO线程中找到。这不是VBS的答案,但可能是实现目标的更简单方法。
=IF(ISNA(VLOOKUP(<single column I value>,<entire column E range>,1,FALSE)),FALSE, TRUE)
-OR -
=IF(ISNA(VLOOKUP(<single column I value>,<entire column E range>,1,FALSE)),"FALSE", "File found in row " & MATCH(<single column I value>,<entire column E range>,0))
您可以替换并使用命名范围。这可能是最简单的。
只需将该公式拖动到您想要的任何列中的I列的长度。
答案 2 :(得分:0)
替换
Is_Copy = IsNumber(Search(Cells(Row_A, 1), Cells(Row_B, 2), 1))
类似
Is_Copy = InStr(Cells(Row_A, 1), Cells(Row_b, 2)) > 0
IsNumber
和Search
不是VBA方法,它们是工作表函数。
答案 3 :(得分:0)
如上所述,搜索不是vb方法或函数。在excel中比较的最佳方法是使用VLOOKUP excel函数,它也不需要编写任何vba脚本。