プロが教えるわが家の防犯対策術!

最近VBAを勉強しはじめた初心者です。

簡単なマクロを使ってエクセルシートを作成中しているのですが、以下の部分がどうしても分りません。

(1)ある列(例えばA列)に数字が入っています。
(2)その数字は、セル1個つき1桁から3桁(1から100の場合)です。
(3)「1」「1」「1」と3セル並んでいたり、「2」「2」が2セルだったりと色々です。
(4)この数字が変化したとき、例えば「1」と「2」の間、「2」と「3」の間などに、
 自動的に行挿入して、空白行を作りたいと思っています。

マクロでこのような事が可能でしょうか?
もし、お分かりになる方がおられましたら、ご教示の程お願いいたします。
どうぞよろしくお願いいたします。

A 回答 (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
    • good
    • 4
この回答へのお礼

返事遅くなり申し訳有りません。

教えていただいた通り実行して順調にできました。
記述の意味まで丁寧に教えていただきありがとうございます。
その意味で今回の回答をベストアンサーとさせていただきました。

もっと勉強していきたいと思います。
ありがとうございました。

お礼日時:2011/08/23 11:37

全く的外れな事を書いてたら申し訳ないのですが、項目が変わるごとに行を挿入という事はひょっとして集計をしたいのでしょうか?(小計行を入れたい)



それでしたら、集計機能を使われるほうがスムーズに行くと思うのですが。

あくまでもマクロで、とか全然違う用途だから、という事でしたらスルーして下さい。
ちょっと思っただけです・・・
    • good
    • 0
この回答へのお礼

ご指導ありがとうございます。
集計では上手に出来ず今回の質問に至りました。
また、よろしくお願いいたします。

お礼日時:2011/08/23 11:34

>お分かりになる方がおられましたら、


しくみは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
テストも少数だし、まだ改良の余地あるが、とりあえず、感じだけ。
    • good
    • 0
この回答へのお礼

返事遅くなり申し訳有りません。

おっしゃるとおりと思います。
引き続き勉強していくつもりです。
ありがとうございました。

お礼日時:2011/08/23 11:38

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
    • good
    • 3
この回答へのお礼

返事遅くなり申し訳有りません。

教えていただいた手順でやってみましたところ、
順調にできました。
記述の意味を理解しながらもっと勉強してみます。ありがとうございました。

お礼日時:2011/08/23 11:33

NO1です。


セルの変化をデータ入力によるものと勘違いしましたので前回分は読み捨て下さい。
    • good
    • 0
この回答へのお礼

No,4の方で記入します。

お礼日時:2011/08/23 11:31

>(4)この数字が変化したとき、例えば「1」と「2」の間、「2」と「3」の間などに、


> 自動的に行挿入して、空白行を作りたいと思っています。
⇒ご例示の場合について、具体例を記述してほしい。
 又、セルの変化としてセルの削除(行挿入・削除も含む)、セルの複数範囲の一括変更も考えられるのであるがどこまで実施するのか等々。
    • good
    • 0
この回答へのお礼

No,4に記入します。

お礼日時:2011/08/23 11:30

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A