ACCESSについての質問です。


下記のようなデータがあります。

1店名    2決算年度  3前々期売上  4決算年度  5前期売上  6決算年度  7今期売上
○○商店  2004年    150000    2005年   180000  2006年   185000
△△工業  2003年    100000    2004年   120000  2005年   135000
※データ数は約6000件程

上記のように会社の決算月などによって前々期の年度数が同じでないデータを以下のように並べたい。
店名   2003年度売上 2004年度売上 2005年度売上 2006年度売上
○○商店          150000     180000    185000
△△工業 100000   120000     135000

恥ずかしながらVBAの知識はまったくありません。
クエリなどで対応出来ないものかと思案しておりますが、何卒よろしくお願いします。
VBAの知識がなくても簡単であれば教えて下さい。
宜しくお願い致します。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2007/04/20 09:21:41
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:nintendogs No.1

回答回数42ベストアンサー獲得回数4

ポイント10pt

列数は質問内容のの7つくらいなのでしょうか?

それならExcelで加工してやるとカンタンだと思います。

1列目:店名

2列目:決算年度

3列目:前々期売上

4列目:決算年度

5列目:前期売上

6列目:決算年度

7列目:今期売上


まずはエクスポートするなり、コピー&ペーストをするなりする。

別のシートに

【商店】【決算年度】【決算金額】という3列のデータを作成

それぞれそこに

1回目・・・1列目.2列目.3列目

2回目・・・1列目.4列目.5列目

3回目・・・1列目.6列目.7列目

と3回に分けて追加。それぞれの列にコピーする

その後は、ピボットテーブルをつかうなりすると集計できるのではないでしょうか?

id:sekai2

ご回答ありがとうございます。

前任者がその方法を使ってやっていたのですが

年に何度かこの作業をする事がありますので

アクセスか何かでマクロを作成して誰でもこの表の作成が出来るようにしたいと考えています。

このデータ以外にもいくつかアクセスで作成しているので出来ればアクセスで作成したいと考えています。

募集は継続いたします宜しくお願いします。

2007/04/16 16:51:51
id:nintendogs No.2

回答回数42ベストアンサー獲得回数4

ポイント10pt

上記内容【商店】【決算年度】【決算金額】のフィールドを持つワークテーブルを作成し、

1.ワークテーブルを削除(カラにするため)

2.追加クエリを実行(1列目.2列目.3列目)

3.追加クエリを実行(1列目.4列目.5列目)

4.追加クエリを実行(1列目.6列目.7列目)

以上、4つのクエリを作って、順番に実行する。

その4つをマクロでさせればワンクリックになるとおもいます。

ただし、この方法は、前々々期、前々々々期とヨコ方向にフィールドが増えていかないことが前提です。

まあ増えてたとしても、追加クエリを増やせばよいのかもしれませんが。

id:sekai2

ご回答ありがとうございます。

質問が悪かったのかもしれません・・

上記方法で行うと3列のデータになるのではないでしょうか?

現在混在しているデータ(2002年~2006年)をそれぞれの列に振り分けたいのです。

2、3列目(2002年~2004年)4、5列目(2003年~2005年)6、7列目(2004~2006年)

これらを

1商店 22002年度売上 32003年度売上 42004年度売上 52005年度売上 62006年度売上

この5列に振り分ける方法を探しています。

複雑な抽出条件になるのでは無いかと思いますが宜しくお願いします。


※2列ずつがセットになっていますが必要なのは売上のみです、2列目に2004と入っている行の3列目を「2004年売上」に振り分けるという方法です。

2007/04/16 17:39:38
id:kn1967 No.3

回答回数2915ベストアンサー獲得回数301

ポイント50pt

前期などに捕らわれずに縦にすることを考えると楽になります。

1店名  2決算年度  3前々期売上
○○商店  2004年    150000
△△工業  2003年    100000

1店名  4決算年度  5前期売上
○○商店  2005年   180000
△△工業  2004年   120000

1店名  6決算年度  7今期売上
○○商店  2006年   185000
△△工業  2005年   135000

上のようなものを作るのにUNIONクエリを用います。

UNIONクエリはSQLを直接書く必要があります。

SELECT 1店名 ,2決算年度 AS 年度,3前々期売上 AS 売上 FROM テーブル名
UNION
SELECT 1店名,4決算年度,5前期売上 FROM テーブル名
UNION
SELECT 1店名,6決算年度,7今期売上 FROM テーブル名;

UNIONクエリの動作結果は

1店名  年度    売上
○○商店 2004年 150000
△△工業 2003年 100000
○○商店 2005年 180000
△△工業 2004年 120000
○○商店 2006年 185000
△△工業 2005年 135000

となります。

あとはクロス集計クエリにて「行見出しに店名」「列見出しに年度」「データに売上」とすれば、

お望みの形になります。

id:sekai2

良く分かる説明ありがとうございます。

なんとかなりそうです!

2007/04/16 18:07:41
id:nintendogs No.4

回答回数42ベストアンサー獲得回数4

ポイント100pt

何度も開けさせてしまいすみません。

ここから、このテーブルをクロス集計クエリーで

名前を

集計:「グループ化」、行列の入れ替え:「行見出し」

年度を

集計:「グループ化」、行列の入れ替え:「列見出し」

金額を

集計:「合計」、行列の入れ替え:「値」

として実行すると、名前ごとに集計し、年度ごとにヨコに並んだ結果が表示されます。

id:sekai2

こちらこそ理解が悪くてすみませんでした。

クロス集計クエリの存在を知りませんでした!

なんとかなりそうですありがとうございます!

2007/04/16 18:07:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません