KJ N

業務改善でVBA経験あり。一昨年Python、MySQL、Django学習開始。

KJ N

業務改善でVBA経験あり。一昨年Python、MySQL、Django学習開始。

最近の記事

エクセルVBAで表の最終行に集計行を付け足す

エクセルで表の最終行に集計行を付け足す場合、ショートカットキー”Alt+Shift+="を使うと簡単に集計行が追加できるが、例えば、データベースからエクセルブックに取り込んだデータが数十件や数百件のシートとなると データを取り込む処理もマクロにし、集計もマクロにしないと面倒。 ちょっと調べてみたところ、数値以外の列にも集計行が追加されてもいいならかなりシンプルにできることがわかった。 どうせなら、フィールド名を集計から除いて、数値の列だけに 集計を入れたいので、以下のよう

    • エクセルVBAでクラスモジュールを使う  【第5回】VLOOKUPの数式は引数に応じてVBAが代わりに書いてくれる

      VLOOKUP関数をVBAで使う場合、「Sheet1のA列の検索値が、Sheet2のA列と合致した時に、Sheet2のC列のデータをSheet1のB列に持ってくる」といった決め打ちのプロシージャを作る場合はネットで検索すると結構出てくる。でも、「もっと汎用的に使い回しができる方法はないか?」と考えてみたところ、以下のようにならできた。 GenVlookup(シート名1, 検索値1セル, シート名2, 検索値2セル, 取得データセル, 数式組み込みセル) 「シート名1の検索値

      • エクセルVBAでクラスモジュールを使う  【第4回】VBAで相対参照の四則演算式を指定列に入れる

        相対参照の計算式を複数行に自動で設定できると結構便利なので試してみました。例えば、 ① D列に=F列 - H列の数式を組み込むケース ② E列に=F列 - G列の数式を組み込むケース 作成したプロシージャの使い方としては、 ① Call 汎用.Col_A_equal_B_calc_C("MainSheet", "D2", "F2", "-", "H2") シート名"MainSheet"の2行目から始まるデータを対象範囲として、 D列に、 =F列 - H列の式を組み込む(第4

        • エクセルVBAでクラスモジュールを使う  【第3回】重複データを削除する

          今回は、重複データ削除用のプロシージャを紹介したいと思います。 データが重複しているかを見る手順は; データが離れたところにあると確認が大変なので、 1.ソートする項目を決めてソートする(=>重複データが上下連続する) 2.ソートした項目を上から順に読み、同じデータが連続=>1件削除 データのイメージは以下の通り。 標準モジュールのプロシージャは以下のようにしました。 Dim RowTop_ As Integer '範囲内最上行 Dim RowBott

        エクセルVBAで表の最終行に集計行を付け足す

        • エクセルVBAでクラスモジュールを使う  【第5回】VLOOKUPの数式は引数に応じてVBAが代わりに書いてくれる

        • エクセルVBAでクラスモジュールを使う  【第4回】VBAで相対参照の四則演算式を指定列に入れる

        • エクセルVBAでクラスモジュールを使う  【第3回】重複データを削除する

          エクセルVBAでクラスモジュールを使う  【第2回】外枠+格子線を引く

          エクセルで作成したデータに罫線を引く時、そのデータ内のセルをどこか1つ選んで、Ctrl+Shift+*を同時に押すと、セルを含む入力データ全体が選択されます。それからどの線を引くかを選んでクリックというのをよくやっています。データを手作業で作った時は、これで十分ですが、データをマクロで自動的に作って、最後に罫線だけ手作業というのも面倒ですので、マクロ内に組み込む汎用的に使えるプロシージャをとりあえず1つ作りました。 標準モジュールにSubプロシージャを1つ作るか、フォームに

          エクセルVBAでクラスモジュールを使う  【第2回】外枠+格子線を引く

          エクセルVBAでクラスモジュールを使う  【第1回】標準化がしやすくなる(プロシージャの例---"外枠+格子線を引く")

          クラスモジュールを使うと標準モジュールやフォームモジュールにベタ打ちするよりも見やすくなった 標準モジュールやフォームモジュールだけでもいろいろできるので、クラスモジュールの存在は知りつつも使ったことはありませんでしたが、試してみたところ便利そうだったので使うことにしました。 クラスを使わずにコーディングすると、 1.コーディングがベタで長くなり、処理の流れを追うのが大変 2.データのコピー・削除・ソートといった作業のたびに同じことを   何回もコーディングすることになり

          エクセルVBAでクラスモジュールを使う  【第1回】標準化がしやすくなる(プロシージャの例---"外枠+格子線を引く")