• ベストアンサー

特定の単語をキーに表の編集をしたい

D9:D60に不特定な単語が入力されています。 「日本」という単語があれば、その上に行を2つ追加します。 更に追加された2つの行に上のセルに「中国」と入力します。 例:D15に「日本」と入力されていれば、2つ行を追加するのでD17に「日本」が移動し、且つ元のD15には「中国」と入力します。 VBAの記述がうまくいきません。 どなたかご教授いただけますでしょうか?

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

方法はいくつかありますがシンプルなサンプルを。 セル範囲がD9~D60と決まっているとして。。 '------------------------------------- Sub test()  Dim R As Long  For R = 60 To 9 Step -1    If Cells(R, "D").Value = "日本" Then      Cells(R, "D").EntireRow.Insert      Cells(R, "D").EntireRow.Insert      Cells(R, "D").Value = "中国"    End If  Next R End Sub '-------------------------------------------- 上記のように最終行(セルD60)から始めるとシンプルなコードになります。 また、2行挿入するコード   Cells(R, "D").EntireRow.Insert   Cells(R, "D").EntireRow.Insert これは、   Cells(R, "D").Resize(2).EntireRow.Insert と1行でもできます。    

noname#74087
質問者

お礼

希望した通りの動きで感謝しております。 ありがとうございます!! また、補足までいただき勉強になりました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

処理ロジックの問題 こういうのは(行挿入は)行挿入によって以後の処理に影響されないよう、最後の行から、処理を始めるのが良い。普通は後(下)の行に挿入なのでソウなのだが、前の位置に行を挿入する本件は、後の行から処理するこの効果もはっきりしないが。 ーー あるいは、上行から処理していって別列に結果を出すほうが安定性がある。 ーー あるいは下からやるが、1つ下を見ていくのもよいかも知れない。 ーー 例データ(D列でなくA列でやっている。実際は修正してください) A1:A14 aa ss ff ff gg日本 hh jj jj jj日本 jj qqqww www rr 日本 ーーーーー コード 標準モジュールに Sub test02() d = Range("a65536").End(xlUp).Row For i = d To 1 Step -1 p = InStr(Cells(i, "A"), "日本") If p <> 0 Then Range(Cells(i, "A"), Cells(i + 1, "A")).EntireRow.Insert Cells(i, "A") = "中国" i = i - 2 End If Next i End Sub ーーーーーーー 結果A1:A20 aa ss ff ff 中国 gg日本 hh jj jj 中国 jj日本 jj qqqww www rr 中国 日本

noname#74087
質問者

お礼

希望した通りの動きで感謝しております。 ありがとうございます!!

関連するQ&A