そのインポートテーブルがデータベースとして正規化されていないものですので、まずは正規形のテーブルに変換する必要があります。
非正規形ではデータベースとして使い物になりません。
具体的には正規形は下記のような形になります。
実際は、品名は、品名マスターに分割したりとか、主キーの設定とかやらなければならないことがまだいろいろありますが、それはおいおい学習してもらうとして(説明しだすと長くなので)、とりあえず上記の形に変換します。
変換する方法としては、いろいろありますが、ユニオンクエリを使う方法を紹介しておきます。
下記のようなユニオンクエリを作成して、それをテーブル作成クエリにして実行すれば上記の正規形のテーブルができます。
sql
1SELECT 品名, 1 AS 月, [1月の合計] AS 合計 FROM インポートテーブル
2UNION All
3SELECT 品名, 2 AS 月, [2月の合計] AS 合計 FROM インポートテーブル
4UNION All
5SELECT 品名, 3 AS 月, [3月の合計] AS 合計 FROM インポートテーブル
6UNION All
7SELECT 品名, 4 AS 月, [4月の合計] AS 合計 FROM インポートテーブル
8UNION All
9SELECT 品名, 5 AS 月, [5月の合計] AS 合計 FROM インポートテーブル
10UNION All
11SELECT 品名, 6 AS 月, [6月の合計] AS 合計 FROM インポートテーブル
12UNION All
13SELECT 品名, 7 AS 月, [7月の合計] AS 合計 FROM インポートテーブル
14UNION All
15SELECT 品名, 8 AS 月, [8月の合計] AS 合計 FROM インポートテーブル
16UNION All
17SELECT 品名, 9 AS 月, [9月の合計] AS 合計 FROM インポートテーブル
18UNION All
19SELECT 品名, 10 AS 月, [10月の合計] AS 合計 FROM インポートテーブル
20UNION All
21SELECT 品名, 11 AS 月, [11月の合計] AS 合計 FROM インポートテーブル
22UNION All
23SELECT 品名, 12 AS 月, [12月の合計] AS 合計 FROM インポートテーブル;
正規形のテーブルの名前を「月別合計」とします。下記のようなパラメータテーブルクエリを作成します。
vba
1SELECT 品名, 月, 合計 FROM 月別合計 WHERE 月=Forms!フォーム1!月;
「フォーム1」を作成してテキストボックス「月」を配置します。
そこの「月」に1~12の任意の数値を入力してこのクエリを開くと指定した月のデータが抽出されて表示されます。
これで質問内容の回答にはなっていますが、データベースは基本を理解せずに設定していくと、あとで使い物にならないものになりますので、遠回りでも基本を学習してから本格的な設計に入ることをお勧めします。
入門書を購入して学習するか、WEB上の入門サイトで学習するといいでしょう。最近の私のお勧めは下記のサイトです。テーブル設計から入って正規化についてきっちり説明されてます。
もう一度学ぶMS-Access
追記
コメントでその場限りでデータペースとしての活用を考えていないとのことなので、
その場限りの対処法を。
SQL
1SELECT
2 品名,
3 Forms!フォーム1!月 AS 月,
4 Choose(Forms!フォーム1!月,
5 [1月の合計],[2月の合計],[3月の合計],[4月の合計],
6 [5月の合計],[6月の合計],[7月の合計],[8月の合計],
7 [9月の合計],[10月の合計],[11月の合計],[12月の合計],) AS 合計
8FROM インポートテーブル;
ただ、「データベースとしての利用目的が薄いデータ」をなぜわざわざAccessで扱うのか、
エクセルで処理すればいいのでは、という本質的な疑問点は残りますが。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/20 05:26
2019/08/20 05:28
2019/08/20 05:38
2019/08/20 05:41
2019/08/20 11:06