- ベストアンサー
エクセルマクロで数値が変った時行挿入できますか
- エクセルのマクロを使用して数値が変化したときに行を挿入することは可能です。
- 初心者の方でも簡単なマクロを使って行挿入ができます。
- 具体的な操作方法を説明いたしますので、ご参考にしてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうか。 Sub Macro1() Dim i As Long 'A列の最終行から上方向にA列の値を見ていき For i = Range("A" & Rows.Count).End(xlUp).Row To 3 Step -1 '前の行の値と異なる場合には If Range("A" & i).Value <> Range("A" & i - 1).Value Then '行を挿入します。 Rows(i).Insert End If Next i End Sub
その他の回答 (5)
- chonami
- ベストアンサー率43% (448/1036)
全く的外れな事を書いてたら申し訳ないのですが、項目が変わるごとに行を挿入という事はひょっとして集計をしたいのでしょうか?(小計行を入れたい) それでしたら、集計機能を使われるほうがスムーズに行くと思うのですが。 あくまでもマクロで、とか全然違う用途だから、という事でしたらスルーして下さい。 ちょっと思っただけです・・・
お礼
ご指導ありがとうございます。 集計では上手に出来ず今回の質問に至りました。 また、よろしくお願いいたします。
- imogasi
- ベストアンサー率27% (4737/17069)
>お分かりになる方がおられましたら、 しくみはVBAをやる人はだれでも知っている。 ーー ただ初心者が、データの入力情況で、自動で行挿入や削除やその他のことを考える・仕組みむのは、早すぎる。 イベントという概念・仕組みの問題だと思う。 また普通はA列だけ中心で考えて良いケースは余りないのでは。 初心者は興味がそちらに行くようだが、もっと基礎的で、早い時期に使わなければならない機能や記述コードが沢山在る。それを広く勉強するのが先だ。 ーー シートタブで右クリックし、その「コードの表示」で出てくる画面に Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 Then Exit Sub Application.EnableEvents = False If Target.Value = Target.Offset(-1, 0).Value Then Else r = Target.Row Rows(r).Insert Shift:=xlDown End If Application.EnableEvents = True End Sub テストも少数だし、まだ改良の余地あるが、とりあえず、感じだけ。
お礼
返事遅くなり申し訳有りません。 おっしゃるとおりと思います。 引き続き勉強していくつもりです。 ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
NO3です。 一例です。 Sub 行を挿入する() For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 If Cells(i, "A") <> Cells(i - 1, "A") Then Rows(i).Insert End If Next i End Sub
お礼
返事遅くなり申し訳有りません。 教えていただいた手順でやってみましたところ、 順調にできました。 記述の意味を理解しながらもっと勉強してみます。ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
NO1です。 セルの変化をデータ入力によるものと勘違いしましたので前回分は読み捨て下さい。
お礼
No,4の方で記入します。
- mu2011
- ベストアンサー率38% (1910/4994)
>(4)この数字が変化したとき、例えば「1」と「2」の間、「2」と「3」の間などに、 > 自動的に行挿入して、空白行を作りたいと思っています。 ⇒ご例示の場合について、具体例を記述してほしい。 又、セルの変化としてセルの削除(行挿入・削除も含む)、セルの複数範囲の一括変更も考えられるのであるがどこまで実施するのか等々。
お礼
No,4に記入します。
お礼
返事遅くなり申し訳有りません。 教えていただいた通り実行して順調にできました。 記述の意味まで丁寧に教えていただきありがとうございます。 その意味で今回の回答をベストアンサーとさせていただきました。 もっと勉強していきたいと思います。 ありがとうございました。