|
|
| Excel VBA Macro ・ 行列操作 ・ FAQ |
|
部署名が変わるごとに空白行を挿入するには?
|
|
|
|
Question 75.2 |
/td>
|
 |
 |
|
|
先日はありがとうございました。 「
既存の名簿から社員だけを抽出して新しい名簿を作成するには?
」のページでご回答いただきました件、あんなに簡単に出来るとは思いませんでした。よく理解できましたので、使わせていただいています。
在籍名簿シート

ところで、それと同じ名簿(右図)の「所属V」で部署ごとに並び替えて、部署の名前が変わるごとに1行ずつ行を追加するというマクロを作成しているのですが、後半部分のマクロをどうすればよいのか、どうしても
分かりません。
大変申し訳ありませんが、教えていただけないでしょうか。
どうか、よろしくお願いします。
|
|
Answer |
Copyright (C) 2005.8.30 永井善王 |
|
|
これについては、類似例として「
データの間に一行ずつ空白行を挿入するには?
」のページがありますから、まず、それを理解していただきたいので、そのページで紹介されているマクロを転載し、分かりやすくするために下記のとおり日本語表記に変えました。
Sub test()
Dim 行 As Long
Const 列 = 1 '最終行を判断するための列
'
For 行 = Cells(Rows.Count, 列).End(xlUp).Row To 2 Step -1
Rows(行).Insert
Next 行
End Sub
このマクロと本件との相違点は、無条件で挿入するか、部署名が変わったら挿入するかですね。
以下に、修正したマクロをお示しし、各行のコードを解説しておきましたので、各コードの意味と、どこをどのように修正したのかをコツコツと理解してください。
Sub test()
10 Dim 行 As Long
20 Const 列 = 7 '所属Vの列
'
30 For 行 = Cells(Rows.Count, 列).End(xlUp).Row To 3 Step -1
40 If Cells(行, 列) <> Cells(行 - 1, 列) Then
50 Rows(行).Insert
60 End If
70 Next 行
End Sub
10行目 … 行番号を示すためのカウンタ変数です。
20行目 … 所属Vの列名 G の数字表記で、最終行の判断もこの列で行います。 この列に空白セルがあると、期待
どおり動作しない場合があります。
30行目 … 行カウンタの初期値、最終値、加算する値を指定して、Next文までのステートメントを繰り返し処理します。
40行目 … もし、G列の行カウンタが示す行のセルの値と、その1行上のセルの値が異なる場合は、次のコード(50行
目)から End If節(60行目)までのコードを実行します。
そうでない場合は、End If節の次のコード(70行目)へ進みます。
50行目 … 行カウンタが示す位置に1行挿入します。
60行目 … If文の終わりを示す End If節です。
70行目 … For...Next文の終わりを示す Next文で
単に Next と記述することも出来ます。
実際にマクロを実行してみると理解しやすいかもしれませんから、試してみて、結果をご連絡ください。
|
|
|
|
| |
|
|