さっそく前回の続きです。。
関数式で「*」印を5行おきにプロットし、その印がついている行に一行ずつ行挿入していくマクロを作成します。
再掲[Sheet1]
|
A |
B |
C |
| 1 |
番号 |
名前 |
生年月日 |
| 2 |
001 |
AAさん |
1975/10/9 |
| 3 |
002 |
ABさん |
1975/9/23 |
| 4 |
003 |
ACさん |
1974/8/5 |
| 5 |
004 |
ADさん |
1966/3/2 |
| 6 |
005 |
AEさん |
1962/2/19 |
| 7 |
006 |
AFさん |
1966/4/23 |
| 8 |
007 |
AGさん |
1974/6/11 |
| 9 |
008 |
AHさん |
1948/10/11 |
| 10 |
009 |
AIさん |
1974/12/6 |
| 11 |
010 |
AJさん |
1964/11/11 |
| 12 |
011 |
AKさん |
1957/1/3 |
| 13 |
012 |
ALさん |
1954/11/17 |
| 14 |
013 |
AMさん |
1947/4/18 |
| 15 |
014 |
ANさん |
1970/6/15 |
| 16 |
015 |
AOさん |
1968/5/26 |
| 17 |
016 |
APさん |
1969/4/3 |
| 18 |
017 |
AQさん |
1963/1/9 |
| 19 |
018 |
ARさん |
1947/11/19 |
(1)前回使用したファイルを開きます。保存していなかった方は、前回ご紹介した手順でまずマクロを生成してください。
(2)[ツール(T)]→[マクロ(M)]→[マクロ(M)]。
(3)「マクロ」ウィンドウのマクロ名「行挿入」を選択して「編集(E)」。
(4)「ガイドシート(手順4)」のように直接編集。追加行の意味は以下の通り。
・If①Then②Else③End if:「もし①であれば②のActionを,そうでなければ③のActionを実行しなさい。」という意味です。この場合、「もしアクティブセルに「*」があったら一行挿入してセルを二行分下に移動させなさい。「*」が無ければセルを一行分下に移動させなさい。」という意味になります。
・Cells(gyou,1)~:gyou行目一列目を選択します。
アクティブセルに「*」マークがあったら一行挿入しますので、次に移動すべきセルは二行分下になります。これが③の「gyou=gyou+2」に相当する部分です。
(5)[ALT]+F11でEXCELシートに戻り、A2セルに、「=IF(MOD(ROW()-2,5)=0,"*","")」と入力して[編集(E)]→[コピー(C)]。
(6)A2セルからA19を範囲指定し、[編集(E)]→[貼り付け(P)]。
(7)そのまま[編集(E)]→[コピー(C)]→[編集(E)]→[形式を選択して貼り付け(S)]とし、現れた「形式を選択して貼り付け」ウィンドウで「値(V)」を選択して「OK」。
(8)[ツール(T)]→[マクロ(M)]→[マクロ(M)]とし、現れた「マクロ」ウィンドウでマクロ名「行挿入」を選択して「実行(R)」。
(9)「How Many Rows」ダイアログボックスに行数を入力し、「ガイドシート(手順9)」のような結果になればOKです。
「Do Until ~ Loop」の間に、「If ~ End if」文を挿入することにより、最後の行まで一行ずつ「*」マークがあるかないかをチェックさせ、もしあったらその行に一行挿入する、というマクロになっています。
手順(5)の「=MOD(ROW()-2,5)」という関数は、アクティブセルのある行の行番号から2を引いたもの(数値データは2行目から始まっているので、2を引いています。)を5で割り算したときの余りを求める関数です。If関数と組み合わせ、余りがゼロなら「*」マークをつけるようにしています。
使い捨てマクロのイメージはだいたいつかんでいただけましたでしょうか。次回から順を追ってゆっくり説明していきます。
<<ガイドシートURL>>
http://www.tcat.ne.jp/~ryu/PLE/Macro/54.pdf