• ベストアンサー

VBA 地名を抽出し、セルごとに分ける2

https://okwave.jp/qa/q9699733.html 上記は同じシート内にマクロを実行しています。 別の「抽出」シートのA1から始めたいのですが。 With Sheets("抽出”)を加えると思うのですが、A列から始まる「mOffset = 0」というものがありまして、それをどう変えたら良いでしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.2

No1です。 「mOffset = 0」は面倒そうなのでそれなしで以下のようにしてみてください。 Sub Test() Dim i As Long, mCol As Variant Dim FStr As String, tmp As String Dim mRange As Range, mFR As Range With Sheets("抽出") For i = 2 To Cells(Rows.Count, "G").End(xlUp).Row If Cells(i, "G").Value <> "" Then tmp = Split(Cells(i, "G"), "(")(1) FStr = Left(tmp, Len(tmp) - 1) Set mFR = .Range("A1:F1") Set mRange = mFR.Find(FStr, LookAt:=xlWhole) If mRange Is Nothing Then MsgBox "都市が存在しません。 " & Cells(i, "G").Value, vbInformation Else mCol = mRange.Column .Cells(.Cells(Rows.Count, mCol).End(xlUp).Row + 1, mCol).Value = Cells(i, "G").Value End If End If Next End With End Sub

nkmyr
質問者

お礼

ありがとうございます。 お陰さまで解決できました。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

抽出のA1から仙台宮城という都市名が始まるということでしたら「mOffset = 0」はそのままでいいです。

nkmyr
質問者

お礼

コメントありがとうございます。 以下のように修正しましたが、結果は「抽出」シートに反映されなく、同じシートのままでした。どこが違うのでしょうか? Sub Test() Dim i As Long, mCol As Variant, mOffset As Variant Dim FStr As String, tmp As String With Sheets("抽出") mOffset = 0 For i = 2 To Cells(Rows.Count, "G").End(xlUp).Row If Cells(i, "G").Value <> "" Then tmp = Split(Cells(i, "G"), "(")(1) FStr = Left(tmp, Len(tmp) - 1) mCol = Application.Match(FStr, Range("A1:F1"), 0) If IsError(mCol) Then MsgBox "地名が存在しません。 " & Cells(i, "G").Value, vbInformation Else Cells(Cells(Rows.Count, mCol + mOffset).End(xlUp).Row + 1, mCol + mOffset).Value = Cells(i, "G").Value End If End If Next End With End Sub

関連するQ&A