EXCEL 2007:比较每个列在工作簿1中的单元格,以查看它是否存在于工作簿2-4中列A的string中

我会说我不知道​​从哪里开始,但是如果需要的话,不要害怕进入VBA(从来没有做过,但可以用其他语言编写代码)。

我公司拥有800个号码的主清单。 我有4个全球地区。 我的4个全局工作簿列A代表主列表中800个数字中的最后4个。 我需要检查每一个“最后4”检查主列表,并报告那些没有代表。

因此,它需要为每个区域工作簿列A,如果它在主工作簿列A中存在,则返回true。否则,我需要它生成与主列表不匹配的行的列表。

我在哪里可以学到这样的技能?

编辑添加:

主簿例子

区域1 exmaple

region2的例子

如果您的主工作簿的位置与您所在的区域工作簿相同,并且没有更改,请将此公式应用到单元格B2中,然后按CTRL + SHIFT + ENTER,然后填写:

=IF(OR(TEXT(A2,0)=RIGHT('masterlist example.xlsx'!$A$2:$A$1000,4)),"YES","NO") 

VBA解决scheme:我在这里做的是将所有主数字保存在一个数组中。 然后我遍历每个区域的工作表,我正在检查区域内的每个数字,以查看主数组中的任何元素的最后4是否等于该区域的数字,如果是,那么我使该数组中的元素等于空白。 最后,我通过数组来查找任何非空白的数字(也就是这些数字不存在于任何区域中),然后我输出它们。

 Sub findMissingNumbers() Dim numbers() As String With Worksheets("Master") For i = 2 To .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Count ReDim Preserve numbers(i) numbers(i - 2) = .Cells(i, 1).Value Next i End With For Each ws In Worksheets With ws If (Not ws.Name = "Master") Then For Each cell In .Range(.Cells(2, 1), .Cells(2, 1).End(xlDown)) For i = 0 To UBound(numbers) - 1 last4master = Right(numbers(i), 4) If (last4master = CStr(cell.Value)) Then numbers(i) = "" End If Next i Next cell End If End With Next ws missingNumbers = "" For Each num In numbers If (Not num = "") Then missingNumbers = missingNumbers & num & vbNewLine End If Next num MsgBox missingNumbers End Sub