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. 否则,我需要它来生成与主工作簿不匹配的行的列表列表。
在哪里可以学到这些技能?
编辑添加:
如果您的主工作簿的位置与您的区域工作簿相同并且没有改变,只需将此公式用于单元格 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
我会说我不知道从哪里开始,但如果需要,我不怕进入 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. 否则,我需要它来生成与主工作簿不匹配的行的列表列表。
在哪里可以学到这些技能?
编辑添加:
如果您的主工作簿的位置与您的区域工作簿相同并且没有改变,只需将此公式用于单元格 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