| 
    
     |  | こんにちは。 
 私もひとつ作ってみました。
 
 Sub サンプル1()
 Dim 開始行 As Long
 Dim 最終行 As Long
 Dim 上端行 As Long
 Dim 下端行 As Long
 Dim ビル名 As String
 Dim 市名合成 As String
 Dim i As Long
 
 上端行 = 1
 最終行 = Range("B65536").End(xlUp).Row
 Do
 ビル名 = Cells(上端行, "C").Value
 '同じビル名がどこまで続くか調べる。
 '(ワークシート関数MATCHとか逆検索とか出来そうだけどベタに探す)
 下端行 = 上端行
 Do
 下端行 = 下端行 + 1
 Loop Until (Cells(下端行, "C").Value <> ビル名) Or (下端行 > 最終行)
 下端行 = 下端行 - 1
 '上で求めた範囲の市名を合成する。
 For i = 上端行 To 下端行
 If i = 上端行 Then
 市名合成 = Cells(i, "B").Value '最初の行はカンマはいらない
 Else
 市名合成 = 市名合成 & "," & Cells(i, "B").Value
 End If
 Next
 '上で求めた範囲にビル名、市名を設定する。
 For i = 上端行 To 下端行
 Cells(i, "E").Value = 市名合成
 Cells(i, "F").Value = ビル名
 Next
 '次のビルの処理をする。
 上端行 = 下端行 + 1
 Loop Until 上端行 > 最終行
 MsgBox "おしまい"
 End Sub
 
 超ベタな方法なので行が多いと時間が掛かると思います。
 
 
 |  |