2016-11-10 63 views
0

我会说我不知道​​从哪里开始,但不怕进入VBA if需要(从未做过,但可以用其他语言编码)。EXCEL 2007:比较每一列工作簿1中的一个单元格,以查看它是否存在于工作簿中列A的字符串中2-4

我公司拥有800个数字的主清单。我有4个全球地区。我的4个全球工作簿列A代表主列表中800个数字中的最后4个。我需要检查每个“最后4”是否与主列表进行核对,并报告未列出的那些。

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

我在哪里可以学习这些技能?

编辑补充:

masterbook example

region1 exmaple

region2 example

+2

我不完全理解你的需要。你能解释一下吗? “4个全球工作簿专栏A代表主列表中800个数字中的最后4个。”这是什么“最后4”?没有意义。 – cullan

+0

@cullan主列表包含整个800.111.1234数字。区域表只包含最后4张(XXX.XXX.1234)。所以我需要验证地区表中的每个最后4位都出现在主列表中。 – Adam

+0

放在这里工作簿的例子和所需的结果\表截图 – bzimor

回答

1

如果主簿的所在位置与您所在地区的工作簿相同,它没有改变,只是用这个公式,单元格B2并按CTRL + SHIFT + ENTER然后填写:

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

这很好地完成我所需要的。谢谢。 – Adam

+0

欢迎您! – bzimor

2

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 
+0

这是一个绝妙的解决方案,更好地研究VBA以供我学习,谢谢,我非常感谢你。 – Adam

+0

im欢呼:)欢呼声 – cullan

相关问题