EXCEL2007:比较工作簿1中A列的每一列单元格,看是否存在于工作簿2-4中A列的字符串中

EXCEL 2007: Compare each column A cell in workbook1 to see if it exists in the strings of of column A in workbooks 2-4

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

我公司拥有 800 个号码的主列表。我有 4 个全球区域。在 4 个全局工作簿中,A 列代表主列表中 800 个数字中的最后 4 个。我需要检查是否每个 "last 4" 都对照主列表进行了检查,并报告那些没有被代表的。

所以它需要 For Each regional workbook column A and return true if it exists in Master workbook column A. 否则,我需要它来生成与主工作簿不匹配的行的列表列表。

在哪里可以学到这些技能?

编辑添加:

masterbook example

region1 exmaple

region2 example

如果您的主工作簿的位置与您的区域工作簿相同并且没有改变,只需将此公式用于单元格 B2 并按 CTRL+SHIFT+ENTER 然后填写向下:

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

VBA 解决方法:我在这里做的是将所有主号码保存在一个数组中。然后我遍历每个区域工作表,检查区域内的每个数字,看看主数组中任何元素的最后 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