ここから質問投稿すると、最大4000ポイント当たる!!!! >>

Excel VBA

以下について、教えて下さい。
自動マクロを少し直せるレベルです。

マクロ実行前はA列に下記の様に入力されています。

《マクロ実行前》
東京12345港区67890
6
4
5東京12345目黒区67890



東京12345渋谷区67890



マクロ実行後は、A列を下記の様にしたいです。


東京12345港区67890
東京12345港区67890
東京12345港区67890
東京12345港区67890
東京12345目黒区67890
東京12345目黒区67890
東京12345目黒区67890
東京12345目黒区67890
東京12345渋谷区67890
東京12345渋谷区67890
東京12345渋谷区67890


次の東京から始まるセルが来るまでは、直近の一番上の東京を含むセルをコピーしたいです。

分かりづらいかもしれませんが、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

No.1 補足



多分マクロ実行前は以下のようなデータだったという事で処理しています。

東京12345港区67890
6
4
5
東京12345目黒区67890



東京12345渋谷区67890

    • good
    • 0

>5東京12345目黒区67890


先頭に東京以外の文字があるということは、その修正もするという意味なのでしょうか。

'//標準モジュール
Sub FillintheSentence()
 Dim c As Variant
 Dim buf As String
 Dim i As Long
 Application.ScreenUpdating = False
 For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
  i = InStr(1, c.Value, "東京", 1)
  If i > 0 Then
   buf = Mid(c.Value, i)  '東京から取り直し
   If i > 1 Then
    c.Value = buf
   End If
  ElseIf i = 0 Then
   c.Value = buf
  End If
 Next c
 Application.ScreenUpdating = True
End Sub
    • good
    • 0

こんな感じではいかがでしょうか?


--------------------------------------------------------------------------
Sub Macro()
Dim 行 As Long
For 行 = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Left(Cells(行, 1).Value, 2) <> "東京" Then
Cells(行, 1).Value = Cells(行 - 1, 1).Value
End If
Next
End Sub
--------------------------------------------------------------------------
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング