【VBA】作成依頼があったので作成してみた件 その3

VBA

前回の続きになります。

項目リストの取得の着手

その1にも書きましたが、集約データのシートのA列は手入力でしていました。そこで新たに、新しいシートに項目リストを一気に取得したのち、集約データのシートのA列にコピペする機能を追加しようと考えました。

着手段階での構想

まず初めに、左端のシートのA列を新しいシートのA列にコピペします。その後、2シート目以降と新しいシートでの項目名を比較して、一致すればなにもしない、一致しなければ最下セルの下にコピペするという機能を考えました。

問題発生

作り始めてから気付いたのですが、比較照合するコードを書く手間や、変数の関係上、左端のシートの項目数が最大になるようにしなければならないことを考慮して、他の手を考えることにしました

次段階での構想

途中までは着手段階と同じです。 まず初めに、左端のシートのA列を新しいシートのA列にコピペします。 次に左から2番目のシートのA列の内容を、新しいシートの最下行の一つ下にコピペします。2番目以降のシートに関してはその繰り返しです。

しかし繰り返し終了直後だと、項目名がたくさん重複する事態が起こってしまいます。それを回避するために、重複する項目名に関しては削除するという機能も取り入れました。以下がそのコードです。

Range(省略).RemoveDuplicates (Array(対応する列数))

まとめ

以上で、一旦項目名のリストが取得できました。あとはこれを、「集約データ」のシートにコピペすればいいだけです。以上その1からその3の内容を総括すると


  1. 集約させたい元データのシートを左側に配置させる
  2. ”その2”シート数を取得を実行
  3. 上記の項目名のリストを作成
  4. 3のリストを集約させたいシートにコピペ
  5. 集約させたいシートと元データの項目名を照合させて一致すればデータを入力していく
    (その1からその2)

ここまでできた段階で、一旦依頼主に「おおまかな機能は作れました。」と連絡を入れました。

しかし、粗削りな部分があったり、思うような動作をしなかったりと、今後は修正を重ねていくことになります。次回はその修正内容について説明していきます。

タイトルとURLをコピーしました