VBAを使って、セルの値を次々と足していき、任意の数を超えたら罫線を引くコードを書いたので公開します。
タイトルや説明だけではピンとこないと思いますので、実際にどういう使い方をするかを画像を使って説明します。
次々とセルを足していって10区切りで罫線を引く
画像のように名前の一覧があって、その横に1が入力されています。
つまり人数分”1”が入力されている状態です。
ここから今回のプログラムを実行すると以下のようになります。
10人ごとに罫線が引かれます。(今回は14人なので、10人と4人に分かれました)
以上のように、任意の数で自動で罫線を引くプログラムって感じです。
これが果たして何に役立つのかっていわれたら疑問な人いるかもですけど、僕の仕事上必要な場面があったので作ってみました。
当たり前ですけど、この一覧の人数が多くなればなるほど、このプログラムの効果が発揮されます!!笑
次々とセルを足していって任意の数で罫線を引くプログラムのコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub test() Dim a, b, c, d, s a = 2 '一覧の一番上の行 b = 2 '1を数える列 c = 1 '空白確認する列 d = 10 '区切る人数 While Cells(a, c) <> "" s = 0 Do While s <= d s = s + Val(Cells(a, b)) a = a + 1 If Cells(a - 1, c) = "" Then Exit Do End If Loop a = a - 1 Cells(a, b).Borders(xlEdgeTop).LineStyle = xlContinuous Wend End Sub |
説明
変数を定義した後の4列は自分の表に合わせて入力して頂く必要があります。
1 2 3 4 5 |
Dim a, b, c, d, s a = 2 '一覧の一番上の行 b = 2 '1を数える列 c = 1 '空白確認する列 d = 10 '区切る人数 |
僕が作った一覧の場合
- 一番上の人が2行目(=a)
- カウント(1と入力)してる列が2列目(=b)
- 空白確認する列が1行目(=c)
- 区切る人数は10人ごと(=d)
この辺は自分の表に合わせて数字を入力して、あとは実行するだけです。
注意点
ループ処理を使ってるので、変にいじるとループが止まらなくなってエクセルが強制終了されます。
意味を理解してコードを修正できる人ならば良いですが、そうでない場合は上記のa,b,c,dを変えるだけで大丈夫です。
最初のWhile文は
1 |
While Cells(a, c) <> "" |
「空白ではない場合ループを続ける」という条件で
途中のDo While文は
1 2 3 |
If Cells(a - 1, c) = "" Then Exit Do End If |
「空白の場合ループを抜ける」
といった感じでループから出れるように工夫してます。
人数をカウントする関数
完全に豆知識なんですけど、エクセルで一覧の人数を数える際に自動で1を入力する方法…
つまり以下の画像みたく1を入れる方法を軽く説明します。
といってもめちゃ簡単なんですが、関数で「=IF(A2=A1,””,1)」といれるだけです。
これを入れておくと、同じ名前が連続する場合、一番先頭に1が入力されます。以下空白になります。
これは結構使えるので覚えておきましょうー終わりです。
コメント