以下の工夫は、最後が、フィリピン産となった場合の「県産」と追加させないようになっています。つまり、最後の文字をそのまま付け加えるようになっています。また、追加分は、追加分だけを加えるようになっていますから、改めて作るようにするためには、 For i = j To m - 1 を、そのまま、For i = 2 To m - 1 にしてください。
但し、現状のマクロでは、岐阜/三重/三重県産 となるような、二重登録防止は付けていません。それと、図の色分けが気になりますね。
'//標準モジュール・該当シートモジュール
Sub TestMacro1()
Dim i As Long, d As Long, e As Long
Dim j As Long, m As Long, n As Long
m = Cells(Rows.Count, 7).End(xlUp).Row '最終行
n = Cells(Rows.Count, 8).End(xlUp).Row '出来上がり行
If n > 2 Then '追加の為の処理
j = n
Else
j = 2 '初期行
End If
Application.ScreenUpdating = False
For i = j To m - 1
If Cells(i, 9).Value Like Cells(i + 1, 9).Value And d = 0 Then
d = i
ElseIf Not (Cells(i, 9).Value Like Cells(i + 1, 9).Value) And d > 0 Then
e = i
Cells(d, 8).Value = CombineData(d, e, 7)
d = 0
End If
Next
Application.ScreenUpdating = True
End Sub
Private Function CombineData(ByVal d As Long, ByVal e As Long, ByVal k As Long)
Dim buf As String
Dim dat As String
Dim rng As Range
Dim i As Long
With ActiveSheet
Set rng = .Range(.Cells(d, k), .Cells(e, k))
End With
For i = 1 To rng.Rows.Count
buf = rng(i).Value
If rng.Rows.Count <> i Then
buf = Replace(buf, "県", "")
buf = Replace(buf, "産", "")
End If
dat = dat & "/" & buf
buf = ""
Next
CombineData = Mid(dat, 2)
End Function
お礼
Wendy02さま 驚きの一言で、完璧なマクロありがとうございました。 自動でマクロ作るくらいの知識しかないので、これから少しずつ勉強したいと思います。 いろいろ考えて頂き、本当にありがとうございました。