エクセルVBAで同じデータが切り替わる項目ごとに空白行を挿入する方法

こんにちは~。「デザインもできるシステムエンジニア」のあつもり(@atumori17)です。今日も業務効率化のアイデアを発信していきますっ!

全10回の連載でエクセルのデータ編集に便利な機能を詰め込んだランチャーアプリを作っていきます。今回はその第10回目です。いよいよ最終回になりましたね~。これでランチャーアプリが完成しますよっ。

前回お伝えした「集計や並び替えを使わず1行おきに空白行を一括で挿入する」に続いて、今回は「同じデータが切り替わる項目行ごとに空白行を挿入する」するテクニックをご紹介します。

エクセルVBAで集計や並び替えを使わず1行おきに空白行を一括で挿入する方法
エクセルシート上に入力されたデータの見栄えを整えたりする時などに、1行おきに空白行を入れたいケースがあると思います。Ctrlキーでを使う方法、並び替えを行う方法などがありますが、大量のデータでは非常に時間がかかります。そこでエクセルVBAで一括で空白行を入れる方法を紹介します。

エクセルシートの見栄えを整えていると項目ごとに空白を入れたいっていうケースがあると思います。例えばこんな感じ

エクセルの集計機能を使えば手動でできないこともないのですが、やはりいくつかの手順を踏まなければならないし、職場など複数人で作業する場合、それぞれの人にやり方を教えなければならず不便です。

というわけでVBAを使って「項目ごとに空白行を挿入する」プログラムを作ってしまいましょう。

レクタングル大336×280

項目ごとに空白行を入れるプログラムの作成

前回使用した一括変換プログラムにボタンを追加する

毎度のことですが作業効率を考え、前回使ったプログラムを再利用します。デスクトップにある「一括変換.xls」を開きます。

UserFrom1を開いて新たに「項目ごとに空白行を入れる」ボタンを追加します。ボタンの表示名はプロパティウィンドウのCaptionで変更できます。ずいぶんボタンが増えたので全体的に少し小さくして、2列に並べました。

サンプルコードを貼り付ける

「項目ごとに空白行を入れる」ボタンをダブルクリックしてコードウィンドウを開きます。「CommandButton7_Click()」の下に以下のコードを貼り付けます。

プログラムコードの解説

重要なポイントに要点を絞って説明していきます。過去の連載記事で解説してきたことについては触れていません。

プログラムの流れは以下のようになります。

  • 項目列を選択するInputBoxを表示させる
  • 開始行を入力するInputBoxを表示させる
  • 最終行から開始行に向かってループさせる
  • 項目行の項目名が変わったらInsertメソッドで空白行を入れる

Withステートメントを使ってプログラムコードを見やすくする

ここで初めてWithが出てきましたね。Withを使うことでオブジェクトを表すコードを何度も書く必要がなくなるので、プログラムがすっきりして見やすくなります。プログラムの可読性が上がりますよっ。

With オブジェクト
処理
End With

Withを使わない場合

Withを使った場合

Withを使わない場合はCells(y, Col)を2回書かないといけませんが、Withを使う場合は1回書くだけで済みます。このことはプログラムコードの可読性を上げるだけでなく、プログラム変更時も少ない修正で済むということです。

Offsetプロパティで前のセルのデータを取得する

Offsetプロパティを使い基準となるセルからの位置を指定することで、別のセルの値を取得することができます。

Rangeオブジェクト.Offset(RowOffset, ColumnOffset)

項目ごとに空白行を入れるプログラムの動作確認

それでは実際に出来上がったプログラムを動かしてみましょう。

ワークシートの起動するボタンを押します。

フォームが表示されたら対象のシートに移動し「項目ごとに空白行を入れる」ボタンを押します。

列を選択するInputboxが表示されたら、項目列を選択しOKボタンを押します。

続いて開始行を入力するInputboxが表示されるので、処理を開始したい行番号を入力します。

項目の変わり目に空白行が挿入されました。

まとめ

いかがでしたか?今回の内容をまとめます。

  • Withを使うことでプログラムコードを見やすくする
  • Offsetプロパティを使って前のセルを取得する

それではまた~。



[連載記事 全10回] エクセルVBAで文字列変換ツールを作る

全角半角の変換をしたり、空白行や改行を削除したり。データ編集に便利な機能を詰め込んだランチャーアプリを作っていきます。1つの記事で1機能ずつ追加していきますので、少しずつVBAを学びながら進めることができます。

  1. エクセルVBAでセル内の文字列に含まれる改行を一括で削除する方法
  2. エクセルVBAでセル内の文字列を操作して全角文字を半角に一括変換する方法
  3. エクセルVBAでチェックボックスのONOFFでボタン表示を変える方法
  4. エクセルVBAでセル内文字列の前後の空白をまとめて一括で削除する方法
  5. エクセルVBAのReplace関数でセルの文字列内の空白をまとめて一括削除する
  6. エクセルVBAのCountA関数でシート内の空白行をまとめて一括で削除する方法
  7. エクセルVBAで空白行を削除しないでまとめて一括非表示で隠す方法
  8. エクセルVBAで条件付き書式を使わず1行おきに色を付ける方法
  9. エクセルVBAで集計や並び替えを使わず1行おきに空白行を一括で挿入する方法
  10. エクセルVBAで同じデータが切り替わる項目ごとに空白行を挿入する方法 (本記事です)
レクタングル大336×280
レクタングル大336×280

シェアする

  • このエントリーをはてなブックマークに追加

フォローする