• 締切済み

【ACCESS VBA】存在しないデータの穴埋めを行うには?

OS:WinXP ACCESS2003 下記のような月別の売上表があります。 東京支店 2009年1月 XXXXXX円 東京支店 2009年2月 XXXXXX円 東京支店 2009年3月 XXXXXX円 名古屋支店 2009年1月 XXXXXXX円 名古屋支店 2009年3月 XXXXXXX円 大阪支店 2009年1月 XXXXXXX円 大阪支店 2009年2月 XXXXXXX円 大阪支店 2009年3月 XXXXXXX円 ・・・ ここで名古屋支店の2009年2月の売上データが存在しないことに注目してください。理由は売上が0円だったからです。 この存在しない「名古屋支店 2009年2月 0円」を自動で追加してあげたいのです。 つまり、予め決められたデータの範囲の中で、存在しないデータを自動で追加してあげたいのですが、どのようにすれば実現できますでしょうか? なお、なぜそのようなデータが必要かというと、 支店別に月別売上推移の棒グラフを作成して表示させようとしたときに、 名古屋支店の2月が飛ばされてしまい、 売上が0円であることをグラフで明示することができないからです。 よろしくお願いします。

みんなの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

テーブルのデータとして仮定します。 月データの無い場所を「TblA」に金額 0 で追加するものになります。 テーブル「TblA」のサンプルです。 (an はオートナンバ) an  場所     月      金額 1  東京支店   2009年1月  \100 2  東京支店   2009年2月  \200 3  東京支店   2009年3月  \300 4  名古屋支店  2009年1月  \1,000 5  名古屋支店  2009年3月  \3,000 6  大阪支店   2009年1月  \10,000 7  大阪支店   2009年2月  \20,000 8  大阪支店   2009年3月  \30,000 処理したい期間の月が作成されているだけのテーブルを1つ用意します。 テーブル「TblB」のサンプルです。 月 2009年1月 2009年2月 2009年3月 以下のクエリをSQLビューに記述します。 INSERT INTO TblA ( 場所, 月, 金額 ) SELECT T1.場所, T1.月, 0 FROM (SELECT * FROM (SELECT DISTINCT 場所 FROM TblA) AS Q1, TblB) AS T1 LEFT JOIN TblA AS T2 ON (T1.場所=T2.場所) AND (T1.月=T2.月) WHERE IsNull(T2.月); ※ (SELECT * FROM (SELECT DISTINCT 場所 FROM TblA) AS Q1, TblB) では、本来あるべき場所と月の一覧を作成します。 場所      月 大阪支店   2009年1月 大阪支店   2009年2月 大阪支店   2009年3月 東京支店   2009年1月 東京支店   2009年2月 東京支店   2009年3月 名古屋支店  2009年1月 名古屋支店  2009年2月 名古屋支店  2009年3月 この一覧と「TblA」を比較して、無いもの IsNull(T2.月) を使って 金額 0 のレコードを追加します。 ※ SELECT T1.場所, T1.月, IIF(IsNull(T2.月),0,T2.金額) AS 金額 FROM (SELECT * FROM (SELECT DISTINCT 場所 FROM TblA) AS Q1, TblB) AS T1 LEFT JOIN TblA AS T2 ON (T1.場所=T2.場所) AND (T1.月=T2.月); とすれば、テーブルに登録するまでもなく、結果を表示することができます。 場所      月     金額 大阪支店   2009年1月  \10,000 大阪支店   2009年2月  \20,000 大阪支店   2009年3月  \30,000 東京支店   2009年1月  \100 東京支店   2009年2月  \200 東京支店   2009年3月  \300 名古屋支店  2009年1月  \1,000 名古屋支店  2009年2月  \0 名古屋支店  2009年3月  \3,000 処理性能はわかりません。 使えなかったらごめんなさい。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

教示されている月別の売上表は テーブルのデータですか、それとも クエリで取得したデータですか。 テーブルのデータならば売り上げ が0円でもデータとして残すはず ですが。クエリで取得したデータ ならば取得の方法を変更すれば 表示できるのではと思いますが。 そのあたりは、どうなのでしょうか。

関連するQ&A