Excel VBA比较列A到列B.

我试图在这里运行这个代码:

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 

但是我得到一个popup窗口说:

“编译错误:子或函数未定义”

然后突出显示第1行和第7行的search。

我需要做什么来解决这个问题?

我试图解决的问题:我有两个UID列表通常我只是比较他们中的两个,但列b有3个额外的字符,所以即时通讯使用search来查看是否列b包含列A.

Search不是VBA中的function。 除非你有这个名字的UDF,否则代码会抛出一个错误。

我一直在使用这种function,在以前的SO线程中find。 这不是一个VBS的答案,但可能是一个更简单的方法来实现你的目标。

 =IF(ISNA(VLOOKUP(<single column I value>,<entire column E range>,1,FALSE)),FALSE, TRUE) 

-要么-

 =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)) 

你可以用命名的rangedreplace。 这可能是最简单的。

只要将该公式一直沿着你的I列的长度拖到你想要的任何列中。

更换

 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 

IsNumberSearch不是VBA方法,它们是工作表函数。

正如上面指出的,search不是一个vb方法或函数。 在excel中进行比较的最佳方法是使用VLOOKUP的excel函数,它不需要编写任何vba脚本。