我会说我不知道从哪里开始,但是如果需要的话,我不害怕进入VBA (从来不这么做,但可以用其他语言编写代码)。
我公司拥有800人的总名单。我有四个全球区域。I 4个全球工作簿列A代表主列表中800个数字中的最后4个。我需要检查每一个“最后4”是否与主列表核对,并报告那些没有代表的。
因此,它需要针对每个区域工作簿列A,如果它存在于主工作簿列A中,则返回true。否则,我需要它生成与主列表不匹配的行的列表。
我在哪里能学到这样的技能?
编辑补充:
发布于 2016-11-10 14:45:53
如果您的主工作簿的位置与您的区域工作簿相同,并且没有更改,只需将此公式用于单元格B2并按下B2,然后填充如下:
=IF(OR(TEXT(A2,0)=RIGHT('masterlist example.xlsx'!$A$2:$A$1000,4)),"YES","NO")发布于 2016-11-10 14:52:37
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 Subhttps://stackoverflow.com/questions/40529411
复制相似问题