2016-09-09 5 views
2

Excelで行方不明の住所番号のレポートを生成することができますか?ストリートあたり(Excel)Excelのストリート番号を報告する

一覧すべて記録ストリート番号:

は例えば、我々はするレポートを生成することが可能である、アップルセント(5番、9、11)のアドレスの3つのレコードを持っています

また、最小変数として1を使用し、範囲内の最大変数として最大記録されたストリート番号を使用して、ストリートごとに欠けているストリート番号のリストを生成しますか?しかし、どのようになど、

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を使用しました:

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

そのため、このサンプルデータから、理想的には私のようなレポートを生成したいと思いますストリートナンバーを複数の変数の文字列として表示すると、私は困ってしまった。

私は自分が望むものを得るためにVBAを使う必要があるかもしれないと思っていますが、このレポートを使用する人が更新して変更できるように、できるだけシンプルにする必要があります。

どのようなヘルプや正しい方向へのポインタは非常に高く評価されます。ありがとう。

+0

? –

+0

オフィスではExcel 2013、家にはExcel 2016あり、ありがとう – garc

答えて

1

これはあなたのためにそれを行います。

Excelのバージョンを使用している
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 
+0

とても有望ですね、うわー!ご返信ありがとうございます。 – garc

+0

あなたは私に最善の答えを与えることができます@garc – Jeremy

関連する問題