- ベストアンサー
特定の単語をキーに表の編集をしたい
D9:D60に不特定な単語が入力されています。 「日本」という単語があれば、その上に行を2つ追加します。 更に追加された2つの行に上のセルに「中国」と入力します。 例:D15に「日本」と入力されていれば、2つ行を追加するのでD17に「日本」が移動し、且つ元のD15には「中国」と入力します。 VBAの記述がうまくいきません。 どなたかご教授いただけますでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
方法はいくつかありますがシンプルなサンプルを。 セル範囲が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行でもできます。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
処理ロジックの問題 こういうのは(行挿入は)行挿入によって以後の処理に影響されないよう、最後の行から、処理を始めるのが良い。普通は後(下)の行に挿入なのでソウなのだが、前の位置に行を挿入する本件は、後の行から処理するこの効果もはっきりしないが。 ーー あるいは、上行から処理していって別列に結果を出すほうが安定性がある。 ーー あるいは下からやるが、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 中国 日本
お礼
希望した通りの動きで感謝しております。 ありがとうございます!!
お礼
希望した通りの動きで感謝しております。 ありがとうございます!! また、補足までいただき勉強になりました。