テーブルから別テーブルへの転記 ③ 配列と連想配列の組合せ ~その8.使い処~

前回は、テーブル間の転記に関するまとめを自作の「集合クラス」に統合
してみた。
infoment.hatenablog.com
今日は、このクラスモジュールの使い処について考えてみる。
f:id:Infoment:20210809224943p:plain

1.VLOOKUP関数で充分では?

ユニークな情報をキーに、テーブルから別のテーブルの情報を参照している。
ならば、VLOOKUP関数で充分ではないのか?至極もっともな意見だ。例えば
こんな感じで。
f:id:Infoment:20210809225311p:plain

しかし結果は御覧のとおり、エラーが発生する。
f:id:Infoment:20210809225413p:plain

なぜなら、テーブルDに存在しないコードが、テーブルAに存在するから。
あまり詳しくないが、おそらくテーブルAとテーブルDが正規化された関係で
あるならば、問題ないのだろう(表現、あってます?)。

しかしこのケースでは、基幹システムなどが吐き出した最新の注文状況などを
受け取って、それを管理台帳のようなものに転記する場合を想定している。
従って、VLOOKUP関数を使用すればエラーが発生することもある訳で。

そんなもの、基幹システムと連動した別システムでやるべきでは?という
意見もあるだろう。

理屈としては正しいと思うが、
「手が届かない痒い所」
をフォローするために、Excelツールが基幹システムの周りに
「アルテミスの首飾り」
の如く張り巡らされるのは、よくあることで。
(システム改修は、お金と時間が掛かるので)。

そのような場合に、このクラスモジュールが役に立つと思う。

加えて「キー列が必ず1列目とは限らない」問題もある。これはMatch関数と
Index関数の組合せで対応可能なため、このクラスを使う理由としては弱いか。

2.パワークエリを使えないか?

集計(例えばピボットテーブル)に不向きな形の表は、パワークエリを使えば
VBAでなくとも自動成型できる。様々な場面で活躍可能な、非常に強力な機能
だと思う。

しかし例えば、こんなケースではどうだろう。A~Gまで7つの営業所があって、
売上に関するデータをExcelで提出してもらうのだが、以下の問題がある。

  1. 営業所毎に書式がバラバラ。
    何度言ってもこちらが提供する書式を使ってもらえない。
  2. 列の入れ替えなど、予告なしにレイアウトを変えてくる。

そんなもの、営業部門の統括責任者が大鉈振って、全営業所の書式を統一させればいいじゃないか?という意見もあるだろう。

理屈としては正しいと思うが、人は、喉元過ぎれば熱さを忘れる生き物だ。
統括責任者が毎日確認するなら話は別だが、少し時間がたてば各営業所で
帳票が独自に進化し出すのは目に見えている。

そのような場合に、このクラスモジュールが役に立つと思う。

3.テーブルを使用することへの抵抗はないか?

これは、大いにあり得る。特に、次のような使い方と相性が悪いため、反発も
多いと思う。

  1. セルを結合したい。
  2. セル内改行したい。
  3. 同名ラベルを複数使いたい。

結果、残念な名前のラベルが増幅することは目に見えている。
f:id:Infoment:20210809232317p:plain

このクラスモジュールは、ラベル名称を目印に転記処理を行っているため、
これは非常に都合が悪い。最大の弱点といっても良い。

これを回避するには、まずテーブル書式の良さを、その本質と多少離れて
いても簡単なところから啓蒙する以外無いかもしれない。例えば、

  1. 表の右端で改行すると、次の行の左端が自動で選択されますよ。
  2. 表がシマシマに色付けされるので見易いですよ。

などなど。背に腹は、変えられない。


結局のところ、このクラスモジュールは、理想的でない状態を容認する
駄目なツールなのかもしれない。

それでは次回、そのダメダメな具体例を紹介します。

参考まで。