Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2795 / 13646 ツリー ←次へ | 前へ→

【65951】データ集計の手法について 八家九僧陀 10/7/10(土) 0:11 質問[未読]
【65953】Re:データ集計の手法について かみちゃん 10/7/10(土) 0:48 発言[未読]
【65957】Re:データ集計の手法について 八家九僧陀 10/7/10(土) 20:23 発言[未読]
【65959】Re:データ集計の手法について かみちゃん 10/7/10(土) 21:33 発言[未読]
【65963】Re:データ集計の手法について 八家九僧陀 10/7/10(土) 23:47 質問[未読]
【65954】Re:データ集計の手法について UO3 10/7/10(土) 8:05 回答[未読]
【65956】Re:データ集計の手法について 八家九僧陀 10/7/10(土) 20:19 質問[未読]
【65958】Re:データ集計の手法について かみちゃん 10/7/10(土) 21:32 発言[未読]
【65960】Re:データ集計の手法について UO3 10/7/10(土) 22:54 発言[未読]
【65961】Re:データ集計の手法について 八家九僧陀 10/7/10(土) 23:39 質問[未読]
【65964】Re:データ集計の手法について かみちゃん 10/7/11(日) 0:13 発言[未読]
【65965】Re:データ集計の手法について 八家九僧陀 10/7/11(日) 0:24 発言[未読]

【65951】データ集計の手法について
質問  八家九僧陀  - 10/7/10(土) 0:11 -

引用なし
パスワード
   Shhet1の元データをSheet2の仕様のような集計をしたいのですが、その関数(sumIf, Dsumとか)か、VBAを教えていただけないでしょうか?

Sheet1 →縦軸に仕入年月日ごとに数百行のデータがあります
Sheet2 →縦軸には、重複せずに抽出した品名コード、品名を、横軸には年月ごと、店名ごとに、その品名の売上計を集計する(店名は売上のない店は集計しない)


(Sheet1)
  A      B    C            Y   
仕入年月日 店名  品名コード 品名 ・・・・・売上・・・
H22.03.21  A店    100002  りんご      1,000
H22.03.03  A店    100004  みかん      2,000
H22.04.20  A店    100005  バナナ      1,500
H22.04.11  A店    100002  りんご      4,000
H22.04.24  A店    100005  バナナ      3,000
H22.03.31  B店    100002  りんご      2,000
H22.04.13  A店    100004  みかん      1,000
H22.05.31  C店    100002  りんご      3,000
H22.04.21  B店    100006  いちご      1,500

(Sheet2)
  A      B    C    D    E   F   G       
            3月  3月  4月 4月 5月・・12月  横計
品名コード 品名    A店   B店  A店  B店  C店
 100002  りんご   1,000  2,000  4,000    3,000
 100004  みかん   2,000      1,000
 100005  バナナ           4,500
 100006  いちご               1,500

【65953】Re:データ集計の手法について
発言  かみちゃん E-MAIL  - 10/7/10(土) 0:48 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Shhet1の元データをSheet2の仕様のような集計をしたい

VBAを使わなくてもピボットテーブルで似たような集計は可能です。
どうしてもVBAであれば、連想配列 Dictionary オブジェクトを使えばいいです。
まずは、調べてみてください。
http://www.niji.or.jp/home/toru/notes/17.html

【65954】Re:データ集計の手法について
回答  UO3  - 10/7/10(土) 8:05 -

引用なし
パスワード
   ▼八家九僧陀 さん:
おはようございます。
最近、同じようなテーマで4種類ほどの方式を考えました。
ご参考になれば。
park7.wakwak.com/cgi-bin/sbox/~efc21/exqalounge.cgi?print+201007/10070018.txt

【65956】Re:データ集計の手法について
質問  八家九僧陀  - 10/7/10(土) 20:19 -

引用なし
パスワード
   ▼UO3 さん:
>▼八家九僧陀 さん:
>おはようございます。
>最近、同じようなテーマで4種類ほどの方式を考えました。
>ご参考になれば。
>park7.wakwak.com/cgi-bin/sbox/~efc21/exqalounge.cgi?print+201007/10070018.txt

ご助言ありがとうございます。
yahooで検索してもヒットしません!
どのように参考にすればいいのでしょうか? 初心者ですので、その参考の仕方さえ知りません。
世話のかける奴ですが、申し訳ありませんが、その仕方(検索、見方)を教えてください。

【65957】Re:データ集計の手法について
発言  八家九僧陀  - 10/7/10(土) 20:23 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>Shhet1の元データをSheet2の仕様のような集計をしたい
>
>VBAを使わなくてもピボットテーブルで似たような集計は可能です。
>どうしてもVBAであれば、連想配列 Dictionary オブジェクトを使えばいいです。
>まずは、調べてみてください。
>http://www.niji.or.jp/home/toru/notes/17.html

マクロ記録でピボットテーブルを実行して、記録中はうまくいくのですが、ところが、記録したマクロを実行すると何故かエラーがでてしまします。
参考のサイト紹介、ありがとうございます。
向後のためにも、とりあえず勉強してみます。

【65958】Re:データ集計の手法について
発言  かみちゃん E-MAIL  - 10/7/10(土) 21:32 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> その仕方(検索、見方)を教えてください。

http://park7.wakwak.com/cgi-bin/sbox/~efc21/exqalounge.cgi?print+201007/10070018.txt
です。

先頭4文字は全角になっていますので、半角にしてください。

【65959】Re:データ集計の手法について
発言  かみちゃん  - 10/7/10(土) 21:33 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>マクロ記録でピボットテーブルを実行して、記録中はうまくいくのですが、ところが、記録したマクロを実行すると何故かエラーがでてしまします。

記録したコードがどのようなコードなのか、どのコードでどのようなエラーが出るのか
説明しないとアドバイスできません。

必要なら、説明してみてはいかがでしょうか?

【65960】Re:データ集計の手法について
発言  UO3  - 10/7/10(土) 22:54 -

引用なし
パスワード
   ▼八家九僧陀 さん:

>yahooで検索してもヒットしません!

こんばんは
ご提示したURLをピーして、検索欄ではなく一番上のURL欄に貼り付けて
サイトを表示差sてください。そこにコード案がでていますので。

【65961】Re:データ集計の手法について
質問  八家九僧陀  - 10/7/10(土) 23:39 -

引用なし
パスワード
   ▼UO3 さん:
>▼八家九僧陀 さん:
>
>>yahooで検索してもヒットしません!
>
>こんばんは
>ご提示したURLをピーして、検索欄ではなく一番上のURL欄に貼り付けて
>サイトを表示差sてください。そこにコード案がでていますので。

ありがとうございます。サイト表示できました。
ただ、サンプルでは、「年月」「期間」の検索項目がないようです。
4月分(4/1〜4/30)、5月分(5/1〜5/31)・・・と年月単位の集計の場合の条件設定(機関指定)が必要な場合はどうなのでしょうか?

【65963】Re:データ集計の手法について
質問  八家九僧陀  - 10/7/10(土) 23:47 -

引用なし
パスワード
   ▼かみちゃん さん:

>記録したコードがどのようなコードなのか、どのコードでどのようなエラーが出るのか
>説明しないとアドバイスできません。
>
>必要なら、説明してみてはいかがでしょうか?

申し訳ありませんでした。
マクロ記録でしたコードを以下に記述します。記録中はうまくいくのですが、記録したマクロを実行するとエラー「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。」との表示が出て実行できません。
なおExcel97を使用しています

sub ピボット作成()

Sheets("売上明細").Select
Range("A2").select
ActiveSheet.PivotTableWizard SourceType:=xlDatabase,SourceData:= _
"'雇用作業'!R1C1:R607C96", TableDestination:="[格納庫.xls]売上集計!R1C1", _
TableName:="ピボットテーブル1"
ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("品名ID", _
"品名"), ColumnFields:=Array("仕入年月日","店名")
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("売上").Orientation = _
xlDataField

'////デバック時、以下の部分が黄色に表示されます
ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "仕入年月日[すべて;合計]", _
xlDataAndLabel
'//////////////////////////////

ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("仕入年月日").Subtotals = Array( _
False,False,False,False,False,False,False,False,False,False,False,False)
ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "品名ID[すべて;合計]", _
xlDataAndLabel
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品名ID").Subtotals = Array( _
False,False,False,False,False,False,False,False,False,False,False,False)

End Sub

【65964】Re:データ集計の手法について
発言  かみちゃん E-MAIL  - 10/7/11(日) 0:13 -

引用なし
パスワード
   こんにちは。かみちゃん です。

ちょっと余計なことを書いたので、一旦削除しました。

> ただ、サンプルでは、「年月」「期間」の検索項目がないようです。
> 4月分(4/1〜4/30)、5月分(5/1〜5/31)・・・と年月単位の集計の場合の条件設定(機関指定)が必要な場合はどうなのでしょうか?

初めから作ってほしいということでしょうか?

ピボットテーブルでほとんどできると思いますが、マクロの記録で記録してみたのでしょうか?
ご自身で試されたことがあるなら、どこまでできているのか説明されたほうがいいと思います。
試していないなら、ヒントをお出ししていますので、そのヒントを試してみればいいと思います。

ちなみに、Sheet1のA列は、日付型の値を表示形式表示しているだけですか?

【65965】Re:データ集計の手法について
発言  八家九僧陀  - 10/7/11(日) 0:24 -

引用なし
パスワード
   ▼かみちゃん さん:
>初めから作ってほしいということでしょうか?
>
>ピボットテーブルでほとんどできると思いますが、マクロの記録で記録してみたのでしょうか?
>ご自身で試されたことがあるなら、どこまでできているのか説明されたほうがいいと思います。
>試していないなら、ヒントをお出ししていますので、そのヒントを試してみればいいと思います。

応答の順番がちぐはぐになってしまいました。申し訳ありません。先ほどマクロ記録で記録したピボットテーブル作成のコードを返信させていただきました。
正直なところ、どの手法がベストなのか見当がつかない状態です。
マクロ記録で記録したピボットテーブルではエラーが出てしまうし、配列をつかった方法、またはsumif関数で、処理速度も重くならない手法はどれなのか、皆目見当がつかないのです。
参考にすればとご教示いただいたサイトにも配列をつかったやり方と、sum(if...を使った関数例がありましたが、いずれも年月、指定期間の条件部分の表記が有りませんでした。その記述さえ全く分からない無知さです。そのコードをサンプル又は関数のどの部分に挿入すればよいのかご教示いただければ、試してみて手法を選択したいと思っています。
>
>ちなみにSheet1のA列は、日付型の値をセルの表示形式で表示しているだけなのでしょうか?

type 7で日付型です。

2795 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free