こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルVBA データを別シートに書き込む

エクセルの、あるシートのデータを、別シートの項目条件の一致するセルに
書き出す方法を教えていただけますでしょうか? 
元のシートには

 A列     B列    C列
ID番号 年月日番号  金額
ID番号 年月日番号  金額
ID番号 年月日番号  金額
 ・      ・       ・
 ・      ・       ・

という形で、データが入っています。各列でデータには重複はありますが、  
A列とB列の内容が共に同じという行は、ありません。
これを列項目がID番号、行項目が年月日番号の、金額を参照する表にしたいのです。


新しいシートのA列に降順に全ID番号を、1行目に同じく全ての年月日番号をいれ、
元のシートのC列データ(金額)を新しいシートの該当セルに書き込むには
どのようにすればいいでしょうか?このような感じで‥。

   月日1 月日2 月日3‥‥
ID1 金額  金額  金額
ID2 金額  金額  金額
ID3 金額  金額  金額
 ・
 ・
 ・

実は元のシートは10枚ほどあり(期間で区切っています)、おまけに各シートには
登場しないID番号もあります。
そこで、すべてのID番号と年月日番号をまとめ、ひとつのシートにしたいと考えた次第です。

1枚のシートならばピボットテーブルで何とかなるのですが、それをまとめようとすると、
データの量が膨大で、PCがとまってしまう(のか計算が終わらない気が‥)

VBAを使えば何とかなるのかもと思いまして、質問いたしました。

エクセルは2007です。

どうぞよろしくお願いいたします。

投稿日時 - 2011-04-08 04:08:49

QNo.6652720

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

方法1)【推奨・一番簡単】集約用の仮シートを1枚用意,シート1からシート10まで元データの表を合計10回コピーして集約シートに上から順に貼り付けて,一本のリストにしてしまう。
一本に集約した元リストから,通常の方法でピボットテーブルレポートを作成する。

#バリエーションとして:
一発仕事じゃなく,今後元データにあれこれ追記したり改変するのにも自動で追従させたいなど欲が出たときは。
集約用の仮シートを1枚用意
その例えば1行目から100行目には,シート1の元データを数式で参照する
=Sheet1!A1
のような式をずらり並べておく
101行目から200行目には,同様にシート2の元データを数式で参照させておく
同様にシート10まで,1000行を使って全部のデータを数式で参照させておく。
これを元にピボットテーブルレポートを作成する。
元データの無いセルはゼロが計算されているので,作成したレポートで行・列アイテムからゼロを表示除外しておく。



方法2)クエリを使って,10枚のシートを強引に一つのリストに束ねてピボットテーブルに食べさせる
10枚のシートはSheet1からSheet10までの名前になっているとする
ブックを保存しておく
ピボットテーブルの作成を開始する
外部データソースを使用にマークし,接続の選択から参照ボタンで「自分ブックを選択」する
とりあえずSheet1$を選んでOKし,シート1の元データからピボットテーブルを作成する

作成したレポートについて,ピボットテーブルツールのオプションでデータソースの変更▼から接続のプロパティを選ぶ
定義のタブでコマンドの種類を「SQL」に変更
コマンド文字列欄に下記をコピー貼り付ける
SELECT * FROM `Sheet1$`
UNION ALL SELECT * FROM `Sheet2$`
UNION ALL SELECT * FROM `Sheet3$`
UNION ALL SELECT * FROM `Sheet4$`
UNION ALL SELECT * FROM `Sheet5$`
UNION ALL SELECT * FROM `Sheet6$`
UNION ALL SELECT * FROM `Sheet7$`
UNION ALL SELECT * FROM `Sheet8$`
UNION ALL SELECT * FROM `Sheet9$`
UNION ALL SELECT * FROM `Sheet10$`

OKし,レポートを更新する。



方法3)【ある意味簡単】
シート1だけから,ふつーにピボットテーブルレポート1を作成する
同様にシート10まで,ピボットテーブルレポート10までを作成する

10枚の縦横集計表が出来てたので,
・データタブの統合を使って一つに束ねる
・ALT+D Pのキー操作でピボットテーブルウィザードを起動し,複数のワークシート範囲から作成した10枚を改めて元データに指定して集計させる



いずれの方法も,いわずもがなですが各列の先頭行(1行目,A1,B1,C1)には,同じ記載内容で「ID番号」だの「年月日」だの「金額」だのの内容を記載しておかなければいけません。

投稿日時 - 2011-04-08 19:06:57

あなたにオススメの質問