(Excel)在Excel中报告街道号码

有谁知道是否有可能在Excel中生成缺less地址街道号码的报告?

例如,我们在Apple St(第5,9,11)中有三个地址logging,是否可以生成一个报告:

列出工作簿中每条街道上logging的所有街道号码

还要生成每条街道丢失的街道号码列表,使用1作为最小variables,最大logging街道号码作为范围的最大variables?

**Sample Data** Street Number: Street Name: 5 Apple St. 9 Apple St. 11 Apple St. 6 Lemon Rd. 3 Watermelon Cl. 

所以从这个样本数据,理想情况下,我想生成一个报告,如:

 Street Name: Recorded Street Numbers: Apple St. 5, 9, 11 Lemon Rd. 6 Watermelon Cl. 3 Street Name: Missing Street Numbers: Apple St. 1, 2, 3, 4, 6, 7, 8, 10 Lemon Rd. 1, 2, 3, 4, 5 Watermelon Cl. 1, 2 

我已经使用INDEX和MATCH来制作一个不同的街道名称列表,但是如何将街道号码列为一个由多个variables组成的string已经难倒了我。

我开始想我可能需要使用VBA来获得我想要的,但是我也需要保持这个尽可能简单,使得使用这个报告的人可以更新和修改它。

任何帮助或指针正确的方向将非常感激。 谢谢。

这将为你做到这一点:

 Sub Check_Street_Number() Dim i As Long, iStreet As Long, Street As String, Cel As Range ActiveSheet.Name = "Inputs" If ActiveWorkbook.Sheets.Count = 1 Then Sheets.Add After:=Sheets("Inputs") Sheets(2).Name = "Output" Sheets("Inputs").Activate Range("B2").Select Range("B2:B" & Range("B2").End(xlDown).Row).Copy Sheets("Output").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Range("A2:A" & Range("A2").End(xlDown).Row).RemoveDuplicates Columns:=1, Header:=xlNo ActiveSheet.Range("A2:A" & Range("A2").End(xlDown).Row).Copy Range("A" & Range("A2").End(xlDown).Row + 3).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Range("A" & Range("A2").End(xlDown).Row + 2).Value = "Street Name:" Range("B" & Range("A2").End(xlDown).Row + 2).Value = "Missing Street Numbers:" Range("A1").Value = "Street Name:" Range("B1").Value = "Recorded Street Numbers:" Range("A1:B1").Font.Bold = True Range("A" & Range("A2").End(xlDown).Row + 2 & ":B" & Range("A2").End(xlDown).Row + 2).Font.Bold = True Do Until iStreet = ActiveSheet.Range("A2:A" & Range("A2").End(xlDown).Row).Cells.Count i = 1 iStreet = iStreet + 1 Street = Cells(1 + iStreet, 1).Value Do Until i > WorksheetFunction.Max(Sheets("Inputs").Range("A2:A" & Range("A2").End(xlDown).Row)) Range("E1").FormulaR1C1 = "=COUNTIFS(Inputs!R[1]C[-3]:R[5]C[-3],""" & Street & """,Inputs!R[1]C[-4]:R[5]C[-4]," & i & ")" If Range("E1").Value = 0 Then If Range("B" & Range("A2").End(xlDown).Row + 2 + iStreet).Value = "" Then Range("B" & Range("A2").End(xlDown).Row + 2 + iStreet).Value = i Else Range("B" & Range("A2").End(xlDown).Row + 2 + iStreet).Value = Range("B" & Range("A2").End(xlDown).Row + 2 + iStreet).Value & ", " & i End If Else If Range("B" & 1 + iStreet).Value = "" Then Range("B" & 1 + iStreet).Value = i Else Range("B" & 1 + iStreet).Value = Range("B" & 1 + iStreet).Value & ", " & i End If End If i = i + 1 Loop Range("B" & Range("A2").End(xlDown).Row + 2 + iStreet).HorizontalAlignment = xlRight Range("B" & 1 + iStreet).HorizontalAlignment = xlRight Loop Range("E1").Value = "" Columns("A:B").EntireColumn.AutoFit End Sub