人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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の知識がなくても簡単であれば教えて下さい。
宜しくお願い致します。

●質問者: sekai2
●カテゴリ:コンピュータ
✍キーワード:access VBA いもの クエリ データ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● nintendogs
●10ポイント

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

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

1列目:店名

2列目:決算年度

3列目:前々期売上

4列目:決算年度

5列目:前期売上

6列目:決算年度

7列目:今期売上


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

別のシートに

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

それぞれそこに

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

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

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

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

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

◎質問者からの返答

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

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

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

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

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

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


2 ● nintendogs
●10ポイント

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

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

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

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

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

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

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

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

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

◎質問者からの返答

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

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

上記方法で行うと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年売上」に振り分けるという方法です。


3 ● kn1967
●50ポイント

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

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

となります。

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

お望みの形になります。

◎質問者からの返答

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

なんとかなりそうです!


4 ● nintendogs
●100ポイント

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

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

名前を

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

年度を

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

金額を

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

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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ