Excel VBA質問箱 IV

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

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


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

【58993】ピボットテーブルを自動化したい ackkn 08/11/22(土) 10:23 質問[未読]
【58994】Re:ピボットテーブルを自動化したい トト 08/11/22(土) 13:29 発言[未読]
【58995】Re:ピボットテーブルを自動化したい ackkn 08/11/22(土) 13:55 発言[未読]
【58996】Re:ピボットテーブルを自動化したい トト 08/11/22(土) 14:19 発言[未読]
【58997】Re:ピボットテーブルを自動化したい ackkn 08/11/22(土) 16:13 発言[未読]
【58998】Re:ピボットテーブルを自動化したい トト 08/11/22(土) 16:37 発言[未読]
【58999】Re:ピボットテーブルを自動化したい ackkn 08/11/22(土) 17:46 お礼[未読]
【59000】Re:ピボットテーブルを自動化したい ackkn 08/11/22(土) 17:48 質問[未読]
【59001】Re:ピボットテーブルを自動化したい トト 08/11/22(土) 18:03 発言[未読]
【59002】Re:ピボットテーブルを自動化したい ackkn 08/11/22(土) 18:13 発言[未読]
【59003】Re:ピボットテーブルを自動化したい かみちゃん 08/11/22(土) 19:50 発言[未読]
【59004】Re:ピボットテーブルを自動化したい ackkn 08/11/22(土) 20:10 発言[未読]
【59005】Re:ピボットテーブルを自動化したい ackkn 08/11/22(土) 20:55 発言[未読]
【59006】Re:ピボットテーブルを自動化したい かみちゃん 08/11/22(土) 21:42 発言[未読]
【59007】Re:ピボットテーブルを自動化したい [名前なし] 08/11/22(土) 23:11 発言[未読]
【59008】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 0:11 発言[未読]
【59009】Re:ピボットテーブルを自動化したい ackkn 08/11/23(日) 9:24 発言[未読]
【59010】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 9:50 発言[未読]
【59011】Re:ピボットテーブルを自動化したい [名前なし] 08/11/23(日) 10:11 発言[未読]
【59012】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 10:16 発言[未読]
【59013】Re:ピボットテーブルを自動化したい ackkn 08/11/23(日) 10:16 発言[未読]
【59014】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 10:37 発言[未読]
【59015】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 11:47 発言[未読]
【59016】Re:ピボットテーブルを自動化したい ackkn 08/11/23(日) 19:47 発言[未読]
【59017】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 20:19 発言[未読]
【59019】Re:ピボットテーブルを自動化したい ackkn 08/11/23(日) 21:53 発言[未読]
【59020】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 22:04 発言[未読]
【59021】Re:ピボットテーブルを自動化したい ackkn 08/11/23(日) 22:45 発言[未読]
【59023】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 22:56 発言[未読]
【59025】Re:ピボットテーブルを自動化したい ackkn 08/11/23(日) 23:06 発言[未読]
【59026】Re:ピボットテーブルを自動化したい かみちゃん 08/11/23(日) 23:15 発言[未読]
【59027】Re:ピボットテーブルを自動化したい ackkn 08/11/23(日) 23:46 発言[未読]
【59028】Re:ピボットテーブルを自動化したい かみちゃん 08/11/24(月) 0:00 発言[未読]
【59029】Re:ピボットテーブルを自動化したい ackkn 08/11/24(月) 0:10 発言[未読]
【59030】Re:ピボットテーブルを自動化したい ackkn 08/11/24(月) 0:23 発言[未読]
【59031】Re:ピボットテーブルを自動化したい かみちゃん 08/11/24(月) 0:34 発言[未読]
【59032】Re:ピボットテーブルを自動化したい かみちゃん 08/11/24(月) 9:57 発言[未読]
【59048】Re:ピボットテーブルを自動化したい ackkn 08/11/24(月) 21:57 お礼[未読]
【59049】Re:ピボットテーブルを自動化したい かみちゃん 08/11/24(月) 22:09 発言[未読]

【58993】ピボットテーブルを自動化したい
質問  ackkn  - 08/11/22(土) 10:23 -

引用なし
パスワード
   久しぶりにお世話になります、ackknといいます。
下のようなシートのデータを倉庫(階数)別、等級別、行数、出荷数を集計したいのですが、ピボットテーブル
を使って手動でやっていましたが、手間がかかるのと誰にでも簡単に頼めないところがあって、何とか自動化したいと思い、過去のレス等も調べてみましたが、うまく全体がまとまりません。
有志の皆様ぜひお力をお貸しください、よろしくお願いします。

列  A    B   C   D    E    F
  日付  出荷先 等級 格納場所 商品名   出荷数量
2008/11/20  A店  特級 071012  ハンガーA  15
2008/11/20  B店  1級 071118  たわしA   65
2008/11/20  C店  1級 120010  スポンジA  10
2008/11/20  D店  2級 071012  スポンジC  36
2008/11/20  E店  特級 071015  たわしA   32
2008/11/20  A店  3級 120111  ハンガーB  150
2008/11/20  C店  3級 071019  ホーキC   12
2008/11/20  D店  4級 140002  ホーキA   58
2008/11/20  E店  5級 120232  ホーキB   50
2008/11/20  C店  2級 071012  スポンジB  16

列  A   B    C    D
 倉庫  等級  出荷数  行数
  0710  特級  47    2
      2級  52    2
      3級  12    1
  0711  1級  65    1
  1200  1級  10    1
  1201  3級  150    1
  1202  5級  50    1
  1400  4級  58    1

尚、格納場所の頭3桁が倉庫番号で、4桁目が階数(0=1階,1=2階,2=3階)です。

【58994】Re:ピボットテーブルを自動化したい
発言  トト  - 08/11/22(土) 13:29 -

引用なし
パスワード
   ▼ackkn さん:
案です。

ピボットテーブルを作り、そのデータ範囲を変更する動作を
マクロ自動記録したら

ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
  "Sheet1!R1C1:R11C7"

となりました。(データはSheet1)

データが変わるのは、行数のみ(シート名も?)かと思うので、
これを取得して、上記コードに当てはめると良いかと思います。


ピボットの集計結果を別シートへコピペするのも、マクロの自動記録で
記録すると良いでしょう。


参考までに。

【58995】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/22(土) 13:55 -

引用なし
パスワード
   ▼トト さん:
早速のレスありがとうございます。
>ピボットテーブルを作り、そのデータ範囲を変更する動作を
>マクロ自動記録したら
>
>ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
>  "Sheet1!R1C1:R11C7"
>
>となりました。(データはSheet1)
>
>データが変わるのは、行数のみ(シート名も?)かと思うので、
>これを取得して、上記コードに当てはめると良いかと思います。
初心者で申し訳ありません。
すいませんが、当てはめる具体的な方法まで教えて頂けませんか。

【58996】Re:ピボットテーブルを自動化したい
発言  トト  - 08/11/22(土) 14:19 -

引用なし
パスワード
   ▼ackkn さん:

行数の取得は
Range("A1").CurrentRegion.Rows.Count

列数の取得は
Range("A1").CurrentRegion.Columns.Count

前記の「R1C1:R11C7」が「A1:G11」を示しています。
(こちらのテストで倉庫のコード算出にG列を追加しました)


行数のみであれば
> "Sheet1!R1C1:R11C7"
"Sheet1!R1C1:R" & Range("A1").CurrentRegion.Rows.Count & "C7"
です。

【58997】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/22(土) 16:13 -

引用なし
パスワード
   ▼トト さん:
ありがとうございます。
>前記の「R1C1:R11C7」が「A1:G11」を示しています。
>(こちらのテストで倉庫のコード算出にG列を追加しました)
>
>行数のみであれば
>> "Sheet1!R1C1:R11C7"
>"Sheet1!R1C1:R" & Range("A1").CurrentRegion.Rows.Count & "C7"
>です。
上記の「倉庫のコード算出にG列を追加しました」の部分が気になりましたが
とりあえず上の式をマクロに登録して実行してみたところ、下記のエラーが
発生しました。

「実行時エラー'1004'
 そのピボットテーブルのフィールド名は正しくありません。ピボットテーブル
 レポートを作成するには、ラベルの付いた列でリストとして編成されたデータ
 を使用する必要があります。ピボットテーブルのフィールド名を変更する場合
 は、フィールドの新しい名前を入力する必要があります。」

どういううことでしょうか?
よろしくお願いします。

【58998】Re:ピボットテーブルを自動化したい
発言  トト  - 08/11/22(土) 16:37 -

引用なし
パスワード
   ▼ackkn さん:
すみません。ピボットについてはよく分かりません。

恐らく最初にピボットを作成したときと、更新しようとしたときで
1行目の見出しの名前が違っているのではないでしょうか。


> 上記の「倉庫のコード算出にG列を追加しました」の部分が気になりましたが
元のデータには、「倉庫」の列はありません。
よって「格納場所」より"想像して"G列に作りました(テストで)

先に書いたとおり、ピボットについて詳しくありません。
ピポットを作成する段階で、ピボットのみに「倉庫」列を
追加できたりするのであれば、そちらの状況に合わせて適宜変更して下さい。

【58999】Re:ピボットテーブルを自動化したい
お礼  ackkn  - 08/11/22(土) 17:46 -

引用なし
パスワード
   ▼トト さん:
>▼ackkn さん:
>すみません。ピボットについてはよく分かりません。
>
>恐らく最初にピボットを作成したときと、更新しようとしたときで
>1行目の見出しの名前が違っているのではないでしょうか。
そうですか...
いろいろとありがとうございました。

【59000】Re:ピボットテーブルを自動化したい
質問  ackkn  - 08/11/22(土) 17:48 -

引用なし
パスワード
   >>▼ackkn さん:
>>すみません。ピボットについてはよく分かりません。
>>
有志の皆様ぜひお力をお貸しください、よろしくお願いします。

【59001】Re:ピボットテーブルを自動化したい
発言  トト  - 08/11/22(土) 18:03 -

引用なし
パスワード
   ▼ackkn さん:
>そうですか...
>いろいろとありがとうございました。
大して力になれず、すみません。

もう落ちますが、
>>恐らく最初にピボットを作成したときと、更新しようとしたときで
>>1行目の見出しの名前が違っているのではないでしょうか。
確認してはいただけなかったようで・・・
駄案でしたかね^^;;

【59002】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/22(土) 18:13 -

引用なし
パスワード
   ▼トト さん:
確認です。
>もう落ちますが、
>>>恐らく最初にピボットを作成したときと、更新しようとしたときで
>>>1行目の見出しの名前が違っているのではないでしょうか。
>確認してはいただけなかったようで・・・
>駄案でしたかね^^;;
最初のレスでの自動記録ですが、私はピボットテーブルの作成からすべてを
自動化できるものと思っておりますが、上記の「最初にピボットを作成した
ときと、更新しようとしたときで…」の感じから自分でピボットテーブルを
作成してからのマクロでしたらすいません。
そこからベクトルが合っていません。
あくまでも私としてはデータからマクロ実行の一発でピボットテーブルの
機能すべてを自動実行したいのです。
いかがでしょうか?

【59003】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/22(土) 19:50 -

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

横から失礼します。

ackkn さん、マクロを考える前に、手作業でピボットテーブルの集計はできますか?

[58993]の例示データだと「倉庫」のデータを事前にG列などの作業列に求めて
おく必要がありますが、まず手作業だったらどうしているかを確認してみませんか?

手作業でうまくできることが確認とれれば、その作業を「マクロの記録」で記録
してみてください。

> 手間がかかるのと誰にでも簡単に頼めないところがあって、何とか自動化したい

手間がかかるのは、わかります。
その手間を自動化するのが「マクロの記録」なのですが、まずは、記録してみた
コードをご提示いただくことはできませんか?

こちらで検証してみたところ、事前に「倉庫」の値を作成する工夫は必要はある
ものの、手作業でできますし、マクロの記録も記録できました。

ここにそのコードを提示することはできますが、それでは、 ackknさんのためには
ならないと考えています。

まずは、手作業での確認と、「マクロの記録」での記録を試されることをおすすめします。

【59004】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/22(土) 20:10 -

引用なし
パスワード
   こんばんは、かみちゃん さん
レスありがとうございます。
>[58993]の例示データだと「倉庫」のデータを事前にG列などの作業列に求めて
>おく必要がありますが、まず手作業だったらどうしているかを確認してみませんか?
了解しました。
>手間がかかるのは、わかります。
>その手間を自動化するのが「マクロの記録」なのですが、まずは、記録してみた
>コードをご提示いただくことはできませんか?
了解です、提示します。
>まずは、手作業での確認と、「マクロの記録」での記録を試されることをおすすめします。
ありがとうございます。

【59005】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/22(土) 20:55 -

引用なし
パスワード
   こんばんは、かみちゃん さん
>レスありがとうございます。
>>手間がかかるのは、わかります。
>>その手間を自動化するのが「マクロの記録」なのですが、まずは、記録してみた
>>コードをご提示いただくことはできませんか?

Sub Macro2()
  Range("G1").Select
  ActiveCell.FormulaR1C1 = "倉庫"
  ActiveCell.Characters(1, 2).PhoneticCharacters = "ソウコ"
  Range("G2").Select
  ActiveCell.FormulaR1C1 = "=LEFT(RC[-3],4)"
  Range("G2").Select
  Selection.AutoFill Destination:=Range("G2:G26"), Type:=xlFillDefault
  Range("G2:G26").Select
  Selection.Copy
  Range("G2").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Cells.Select
  Application.CutCopyMode = False
  ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "Sheet2!C1:C7").CreatePivotTable TableDestination:="", TableName:= _
    "ピボットテーブル2", DefaultVersion:=xlPivotTableVersion10
  ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
  ActiveSheet.Cells(3, 1).Select
=> With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫")
    .Orientation = xlRowField
    .Position = 1
  End With
  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("等級")
    .Orientation = xlRowField
    .Position = 2
  End With
  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出荷数量")
    .Orientation = xlRowField
    .Position = 3
  End With
  ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _
    "ピボットテーブル2").PivotFields("商品名"), "データの個数 / 商品名", xlCount
  ActiveWindow.SmallScroll Down:=-3
End Sub

上記のコードが記録されましたが、再度実行すると何故かエラーになります。

実行時エラー'1004'
PivotTableクラスのPivotFieldsプロパティを取得できません。

[デバッグ]を押すと上記=>の行に飛びます。
よろしくお願いします。

【59006】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/22(土) 21:42 -

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

>上記のコードが記録されましたが、再度実行すると何故かエラーになります。

本当にこのコードでしたいことができていますか?
まず、[58993]で提示された元データが11行しかないのに、
Selection.AutoFill Destination:=Range("G2:G26"), Type:=xlFillDefault
としているのはなぜですか?

次に、
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "Sheet2!C1:C7").CreatePivotTable
としていますが、
これは、手作業の場合の「ピボットテーブル/ピボットグラフ ウィザード 2/3」
で、「範囲」を Sheet2!C1:C7 と指定しているのではないですか?

本当にその範囲で合っていますか?

>実行時エラー'1004'
>PivotTableクラスのPivotFieldsプロパティを取得できません。

これのエラーの直接の原因は、上記の
>> 「範囲」を Sheet2!C1:C7 と指定している
にあると思います。
その範囲に、「等級」というフィールドは、あのますが、「倉庫」というフィールド
がないからです。

ではどのようにしたらいいのかですが、

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "Sheet2!A1:G11").CreatePivotTable 〜
のようにすればいいのですが、本当にそれでしたいことができているのかが
非常に疑問です。

おそらく、手作業できちんと期待している結果が得られていないと思います。

今一度確認してみてください。

【59007】Re:ピボットテーブルを自動化したい
発言  [名前なし]  - 08/11/22(土) 23:11 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
レスありがとうございます。
>本当にこのコードでしたいことができていますか?
>まず、[58993]で提示された元データが11行しかないのに、
>Selection.AutoFill Destination:=Range("G2:G26"), Type:=xlFillDefault
>としているのはなぜですか?
すいません、今回[58993]で提示しました元データは実際のデータではなく、
今回のテストでは実データを26行切り取ってテストしました。

>次に、
>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>    "Sheet2!C1:C7").CreatePivotTable
>としていますが、
>これは、手作業の場合の「ピボットテーブル/ピボットグラフ ウィザード 2/3」
>で、「範囲」を Sheet2!C1:C7 と指定しているのではないですか?
ピボットテーブル/ピボットグラフ ウィザード 2/3は使っていません。
ピボットテーブル/ピボットグラフ ウィザード 1/3で完了させ、後はフィールドをドラッグ&ドロップしました。

>本当にその範囲で合っていますか?
C7に倉庫データを作っていますので、範囲はいいと思うのですが...

>>実行時エラー'1004'
>>PivotTableクラスのPivotFieldsプロパティを取得できません。
>これのエラーの直接の原因は、上記の
>>> 「範囲」を Sheet2!C1:C7 と指定している
>にあると思います。
>その範囲に、「等級」というフィールドは、あのますが、「倉庫」というフィールド
>がないからです。
「倉庫」フィールドはC7にありますが...

>ではどのようにしたらいいのかですが、
>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>    "Sheet2!A1:G11").CreatePivotTable 〜
>のようにすればいいのですが、本当にそれでしたいことができているのかが
>非常に疑問です。
どうしてA1:G11になるのですか?

>おそらく、手作業できちんと期待している結果が得られていないと思います。
>今一度確認してみてください。
確かに正確には得られていません。
と言いますのは、細かく言いますと各等級毎の合計が挿入されていますから
その後コピペして整形しています。
それで、この辺のコピペ整形も不要なようにマクロで行いたいのです。
よろしくお願いします。

【59008】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 0:11 -

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

[59007]の投稿者名が[名前なし]となっていますが、ackknさんでしょうか?

>>本当にこのコードでしたいことができていますか?
>>まず、[58993]で提示された元データが11行しかないのに、
>>Selection.AutoFill Destination:=Range("G2:G26"), Type:=xlFillDefault
>>としているのはなぜですか?
>すいません、今回[58993]で提示しました元データは実際のデータではなく、
>今回のテストでは実データを26行切り取ってテストしました。

なぜそのようなことをしたのですか?
私たち掲示板を見ている者は、[58993]のサンプルデータしか情報がありません。
それを勝手に変えられて、
> 何故かエラーになります。
と書かれても検証のしようがなく、困ってしまいます。

>>次に、
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    "Sheet2!C1:C7").CreatePivotTable
>>としていますが、
>>これは、手作業の場合の「ピボットテーブル/ピボットグラフ ウィザード 2/3」
>>で、「範囲」を Sheet2!C1:C7 と指定しているのではないですか?
>ピボットテーブル/ピボットグラフ ウィザード 2/3は使っていません。
>ピボットテーブル/ピボットグラフ ウィザード 1/3で完了させ、後はフィールドをドラッグ&ドロップしました。

なるほど。。。


>>本当にその範囲で合っていますか?
>C7に倉庫データを作っていますので、範囲はいいと思うのですが...

では、テストした26行のデータを提示してください。

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "XXXXXXXX").CreatePivotTable TableDestination:="", TableName:= _
    "ピボットテーブル2", 〜
で指定された範囲(XXXXXXXX)のフィルード名(先頭行)が「倉庫」となっていない場合、
AtiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫")
でエラーになります。

>>>実行時エラー'1004'
>>>PivotTableクラスのPivotFieldsプロパティを取得できません。
>>これのエラーの直接の原因は、上記の
>>>> 「範囲」を Sheet2!C1:C7 と指定している
>>にあると思います。
>>その範囲に、「等級」というフィールドは、あのますが、「倉庫」というフィールド
>>がないからです。
>「倉庫」フィールドはC7にありますが...

「倉庫」フィールドはC7にあるという意味がわかりません。
「倉庫」という文字列がC7にあるのですか?それであれば、C1にないといけません。

>>ではどのようにしたらいいのかですが、
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    "Sheet2!A1:G11").CreatePivotTable 〜
>>のようにすればいいのですが、本当にそれでしたいことができているのかが
>>非常に疑問です。
>どうしてA1:G11になるのですか?

私は、[58993]で提示されたデータしか見ていないからです。
たしかに行列番号が明記されていないから、想像している部分はありますが・・・
私が勘違いしていましたら、ご指摘ください。

>>おそらく、手作業できちんと期待している結果が得られていないと思います。
>>今一度確認してみてください。
>確かに正確には得られていません。
>と言いますのは、細かく言いますと各等級毎の合計が挿入されています

ピボットテーブルの基本機能だと思います。
でも、手作業で集計方法を変更(自動→なし)できます。
完成したピボットテーブルの「倉庫」をダブルクリックすると「ピボットテーブル フィールド」
ダイアログボックスが表示されるので、そこで「集計」を「なし」にすると、
各倉庫ごと(階級ごとではないと思う)の合計は、表示されません。

いずれにしても、私が今、知り得ているサンプルデータと、そちらで試されている
サンプルデータに差異があると思います。
そのあたりから、きちんと再度説明していただくか、サンプルデータを[59007]
でまずは試していただきたいと思います。

なお、ピボットテーブルの自動化は、手作業で確実にできているならば、
「マクロの記録」で大体のことはできてしまいますので、そんなに難しい
話ではありません。

また、余計なお世話かもしれませんが、ピボットテーブルの一般操作が今ひとつ
難しいのであれば以下のURLあたりを参考にしてください。
http://www11.plala.or.jp/koma_Excel/pivot_menu.html

【59009】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/23(日) 9:24 -

引用なし
パスワード
   かみちゃん さん、おはようございます。
レスありがとうございます。
>[59007]の投稿者名が[名前なし]となっていますが、ackknさんでしょうか?
申し訳ありません、ackknで間違いありません。
自宅のPCに替わったものですから、大変失礼致しました。

>なぜそのようなことをしたのですか?
>私たち掲示板を見ている者は、[58993]のサンプルデータしか情報がありません。
>それを勝手に変えられて、
>> 何故かエラーになります。
>と書かれても検証のしようがなく、困ってしまいます。
申し訳ありません、基本の基を外してしまって弁解の余地もありません。
今回のデータを提示いたします。

>「倉庫」フィールドはC7にあるという意味がわかりません。
>「倉庫」という文字列がC7にあるのですか?それであれば、C1にないといけませ
>ん。
そうです、でもC1にないといけないのが解りません。
ピボットテーブルを作る際は先頭列(C1)ですが、実データではC7列にあります。

>ピボットテーブルの基本機能だと思います。
>でも、手作業で集計方法を変更(自動→なし)できます。
>完成したピボットテーブルの「倉庫」をダブルクリックすると「ピボットテーブ
>ル フィールド」
>ダイアログボックスが表示されるので、そこで「集計」を「なし」にすると、
>各倉庫ごと(階級ごとではないと思う)の合計は、表示されません。
そうなんですか、最初に指摘された「手作業でピボットテーブルの集計はできますか?」が思い出されお恥ずかしいかぎりです。 ありがとうございます。
下が実データです、よろしくお願いします。

 日付   出荷先 等級 格納場所    商品名            出荷数量
2008/11/20 三戸店     0008 180004    フロアクリン D−240    2
2008/11/20 合前店     0008 185110    ボトムクリッパー BR    3
2008/11/20 頭島店     0008 187102    庭園ほうき 長柄      5
2008/11/20 理南店     0012 180015    体重計           10
2008/11/20 寺女店     0012 180102    兼用フタカバー BR    15
2008/11/20 浜府店     0012 180102    便座カバーO型 BR    1
2008/11/20 合前店     0013 180005    抗菌まな板 L       18
2008/11/20 合前店     0013 180007    抗菌まな板 M       2
2008/11/20 三戸店     0013 185140    リビングフック 大         8
2008/11/20 小湖店     0013 185140    リビングフック 大         4
2008/11/20 柳武店     0015 180013    102ロシ 100枚    60
2008/11/20 合前店     0015 180013    102ロシ 100枚    5
2008/11/20 日府店     0015 185000    102ロシ(40枚)    3
2008/11/20 日府店     0015 185000    103ロシ(40枚)    12
2008/11/20 合前店     0015 185130    キッチンクロス 5枚入    5
2008/11/20 合前店     0022 178006    揚げものフェンス 1枚入    3
2008/11/20 日府店     0022 178006    揚げものフェンス 1枚入    5
2008/11/20 所塚店     0022 180013    油処理袋 500ml 2P    54
2008/11/20 寺女店     0022 180013    システムマット3口用 5P    3
2008/11/20 柳武店     0022 185000    45Lごみ袋黒10枚    11
2008/11/20 柳武店     0022 185000    45Lごみ袋透明10    7
2008/11/20 際波店     0028 180007    パーティプレート大 2P    3
2008/11/20 騨渡店     0028 180013    元禄著 100膳      6
2008/11/20 騨渡店     0028 185000    ペーパータオル 15P    5
2008/11/20 日府店     0028 185000    クリアカップ 3P         15

【59010】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 9:50 -

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

>>「倉庫」フィールドはC7にあるという意味がわかりません。
>>「倉庫」という文字列がC7にあるのですか?それであれば、C1にないといけませ
>>ん。
>そうです、でもC1にないといけないのが解りません。
>ピボットテーブルを作る際は先頭列(C1)ですが、実データではC7列にあります。

意味がわかりません。

  Range("G1").Select
  ActiveCell.FormulaR1C1 = "倉庫"

としているではないのですか?

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "Sheet2!C1:C7").CreatePivotTable 〜

としている以上、
C1が「倉庫」となっていないから、

 With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫") '<==

でエラーが出ているというのは、おわかりいただけませんか?

再提示いただいたデータで

      SourceData:= _
    "Sheet2!C1:C7").

とC列のみかつ7行分しかピボットテーブルの範囲を指定していない理由を教えて
ください。

そこを理解していただけると、一歩前に進むことができます。

こちらでは、すでに正解と思われるコードが用意できていますが、
「マクロの記録」でほとんどできるので、がんばっていただきたい、また、
手作業ですら、期待したとおりの出力ができていないなど矛盾な点が多いので、
ポンとコードを提示するのを差し控えていると状態です。

【59011】Re:ピボットテーブルを自動化したい
発言  [名前なし]  - 08/11/23(日) 10:11 -

引用なし
パスワード
   (質問者ではありません)

>C列のみかつ7行分しかピボットテーブルの範囲を指定していない理由を教えてください。
マクロ記録で SourceData:= "Sheet2!C1:C7" となるのは、
A:G列全体を選択してピヴォットを作ったからです。
R1C1形式で記録される仕様のせいです。
修正せずに実行すると当然エラーになります。惑わされてはいけません。

【59012】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 10:16 -

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

>>C列のみかつ7行分しかピボットテーブルの範囲を指定していない理由を教えてください。
>マクロ記録で SourceData:= "Sheet2!C1:C7" となるのは、
>A:G列全体を選択してピヴォットを作ったからです。
>R1C1形式で記録される仕様のせいです。
>修正せずに実行すると当然エラーになります。惑わされてはいけません。

なるほど。そういうことですね。
(質問者ではない)[名前なし]さん、教えていただいてありがとうございます。
非常に明快でした。

ackknさん、私の誤解で、惑わせてしまい申し訳ありません。
少し視点を変えて、動作確認します。

【59013】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/23(日) 10:16 -

引用なし
パスワード
   かみちゃん さん、こんにちは。
>>>「倉庫」フィールドはC7にあるという意味がわかりません。
>>>「倉庫」という文字列がC7にあるのですか?それであれば、C1にないといけませ
>>>ん。
>>そうです、でもC1にないといけないのが解りません。
>>ピボットテーブルを作る際は先頭列(C1)ですが、実データではC7列にあります。
>意味がわかりません。
>
>  Range("G1").Select
>  ActiveCell.FormulaR1C1 = "倉庫"
>
>としているではないのですか?
上記の通り「G1」に"倉庫"はあります。

>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>    "Sheet2!C1:C7").CreatePivotTable 〜
>
>としている以上、
>C1が「倉庫」となっていないから、
>
> With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫") '<==
>でエラーが出ているというのは、おわかりいただけませんか?
>
>再提示いただいたデータで
>
>      SourceData:= _
>    "Sheet2!C1:C7").
>
>とC列のみかつ7行分しかピボットテーブルの範囲を指定していない理由を教えて
>ください。
「C列のみかつ7行分しか...」何も心当たりがありません。
上記の"Sheet2!C1:C7"は、A列(1)からG列(7)までの事ではないのでしょうか?
今回私も「ピボットテーブル/ピボットグラフ ウィザード 2/3」を経由してやって
みましたが、列のみの範囲指定($A$G)になりましたので。
よろしくお願いします。

【59014】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 10:37 -

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

>>とC列のみかつ7行分しかピボットテーブルの範囲を指定していない理由を教えて
>>ください。
>「C列のみかつ7行分しか...」何も心当たりがありません。
>上記の"Sheet2!C1:C7"は、A列(1)からG列(7)までの事ではないのでしょうか?
>今回私も「ピボットテーブル/ピボットグラフ ウィザード 2/3」を経由してやって
>みましたが、列のみの範囲指定($A$G)になりましたので。

[59011]の[名前なし]さんからの

>>>C列のみかつ7行分しかピボットテーブルの範囲を指定していない理由を教えてください。
>> マクロ記録で SourceData:= "Sheet2!C1:C7" となるのは、
>> A:G列全体を選択してピヴォットを作ったからです。

という指摘で私も気づきました。

C1:C7は、
C1セルからC7セルという意味ではなく、
1列目〜7列目という列全体の指定だったのですね。
普段から、ピボットテーブルを使っていますが、列全体を元データ範囲として
指定することをしたことがありませんでしたので、気づきませんでした。

まず、その点について、お詫びします。申し訳ありませんでした。

そこで、どこを修正したらいいかですが、

"Sheet2!C1:C7"



"Sheet2!A:G"

とするか、

Sheets("Sheet2").Columns("A:G")

としてみてください。

そうすると、とりあえず、エラーは出なくなると思います。

あとは、[59005]で提示されたコードで[58993]のような集計フォーマットが得られるのか、
という疑問が残ります。

こちらで、検証した限り、集計イメージが得られていないのではないかと考えています。

【59015】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 11:47 -

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

>>あとは、[59005]で提示されたコードで[58993]のような集計フォーマットが
>>得られるのか、という疑問が残ります。
>>
>>こちらで、検証した限り、集計イメージが得られていないのではないかと考
>>えています。

[59009]で再提示されたデータに基づき集計した結果としては、
以下のような感じのものを得たいのではないのですか?

  A   B   C   D  E
1
2
3      データ
4 倉庫 等級 出荷数 行数
5 1780 0022   8  2
6 1800 0008   2  1
7   0012   10  1
8   0013   20  2
9   0015   65  2
10   0022   57  2
11   0028   9  2
12 1801 0012   16  2
13 1850 0015   15  2
14   0022   18  2
15   0028   20  2
16 1851 0008   3  1
17   0013   12  2
18   0015   5  1
19 1871 0008   5  1
20

> 手動でやっていましたが、手間がかかるのと誰にでも簡単に頼めないところ
> があって、何とか自動化したい

今まで手動でしていて、今回自動化したいということなので、まず手作業では
できているのですよね?
その手作業の操作を「マクロの記録」で記録したコードが[59005]ということ
ですが、本当に上記のようなイメージが得られていますか?

コードをSourceDataの部分を修正して実行すると、以下のような感じになり
ませんか?

   A  B   C   D  E
1
2
3 データの個数 / 商品名
4 倉庫 等級 出荷数量 合計
5 1780 0022    3  1  ←出荷数量は3+5の8にしたいのでは?
6         5  1
7   0022 合計    2  ←合計を表示したくない
8 1780 合計       2  ←合計は、どうするのでしょうか?
9 1800 0008       2
10  :  :     :  :

私がまだ勘違いしていましたら、ご指摘ください。

【59016】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/23(日) 19:47 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
私でない[名前なし]さん、ありがとうございました。
私も[名前なし]さんの発言を自分のものと思い込んで見落としておりました。
>>>こちらで、検証した限り、集計イメージが得られていないのではないかと考
>>>えています。
>[59009]で再提示されたデータに基づき集計した結果としては、
>以下のような感じのものを得たいのではないのですか?
>
>  A   B   C   D  E
> 1
> 2
> 3      データ
> 4 倉庫 等級 出荷数 行数
> 5 1780 0022   8  2
> 6 1800 0008   2  1
> 7   0012   10  1
> 8   0013   20  2
> 9   0015   65  2
>10   0022   57  2
>11   0028   9  2
>12 1801 0012   16  2
>13 1850 0015   15  2
>14   0022   18  2
>15   0028   20  2
>16 1851 0008   3  1
>17   0013   12  2
>18   0015   5  1
>19 1871 0008   5  1
>20
>
確かに最初の質問時点では上記のフォームを書きました。
でも、正確には以下の通りです。
>コードをSourceDataの部分を修正して実行すると、以下のような感じになり
>ませんか?
>
>   A  B   C   D  E
> 1
> 2
> 3 データの個数 / 商品名
> 4 倉庫 等級 出荷数量 合計
> 5 1780 0022    3  1  ←出荷数量は3+5の8にしたいのでは?
> 6         5  1
> 7   0022 合計    2  ←合計を表示したくない
> 8 1780 合計       2  ←合計は、どうするのでしょうか?
> 9 1800 0008       2
>10  :  :     :  :

はい、上記の通りになります。
以前に書きましたが、上記の結果をコピペして整形しております。
その整形と言いますのが、最初にかみちゃんさんが提示された「以下のような感じ
のもの」そのものに、各倉庫毎(5と6の間、11と12の間、12と13の間...)に出荷数
と行数の合計があります。
よろしくお願いします。

【59017】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 20:19 -

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

>確かに最初の質問時点では上記のフォームを書きました。
>でも、正確には以下の通りです。

えっ?どこで、出力仕様の変更の説明をされたのですか?
いくらスレッドを読み返しても、出力仕様は、[58993]だと思っていました。
途中で、出力仕様が変わったなら、それは、説明していただかないと困ってしまいます。
その説明不足がスレッドがこれだけ長くなっている原因のひとつです。
もうひとつは、データ範囲についての私の誤解がありますが・・・

仕切りなおしで、[59009]のサンプルデータで、どのような出力結果を求めて
おられるのか、ackkn さんより再度ご提示いただけませんでしょうか?

特に、

> そのものに、各倉庫毎(5と6の間、11と12の間、12と13の間...)に出荷数
> と行数の合計があります。

の部分がわかりづらいです。

以下のようなシートイメージで、期待している結果を示してください。

   A   B   C
1
2
3
4
5
6

※シートイメージ投稿の際は、投稿欄右下の「等幅」にチェックをしてください。

【59019】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/23(日) 21:53 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
>えっ?どこで、出力仕様の変更の説明をされたのですか?
>いくらスレッドを読み返しても、出力仕様は、[58993]だと思っていました。
すいません。言い回しが悪かったですね。
出力仕様は、[58993]でOKです。

>以下のようなシートイメージで、期待している結果を示してください。
>
   A   B   C   D
4  倉庫  等級  出荷数 行数
5  1780  0022   8  2
6  1780 合計    8  2
7  1800  0008   2  1
8     0012   10  1
9     0013   20  2
10     0015   65  2
11     0022   57  2
12     0028   9  2
13 1800 合計   163  10
14 1801  0012   16  2
15 1801 合計    16  2
16 1850  0015   15  2
17     0022   18  2
18     0028   20  2
19 1850 合計    53  6
20 1851  0008   3  1
21     0013   12  2
22     0015   5  1
23 1851 合計    20  4
24 1871  0008   5  1
25 1871 合計    5  1

【59020】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 22:04 -

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

>出力仕様は、[58993]でOKです。

それであれば、手作業でこのような出力結果を求めることはできているのですよね?
その操作を「マクロの記録」で記録したコードが[59005]のコードなのですか?

そのコードを再度実行すると、[59015]の後半で私が示した結果になりませんか?
つまり、手作業で、本当に求めたい結果が得られているのか?という疑問を持っています。

それとも、そもそも、本当に期待している結果が、実は手作業でも得られていない
ということですか?
それであれば、
> 手動でやっていましたが、手間がかかるのと誰にでも簡単に頼めないところがあ
> って、何とか自動化したい
という理由がよくわかりません。

なお、ひとつだけ確認ですが、データ範囲の設定によるエラーの件は、解決した
ということでいいですか?
その報告がないので、どうなっているのか心配しています。

【59021】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/23(日) 22:45 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
>それであれば、手作業でこのような出力結果を求めることはできているのですよね?
>その操作を「マクロの記録」で記録したコードが[59005]のコードなのですか?
そうです。
>そのコードを再度実行すると、[59015]の後半で私が示した結果になりませんか?
だから、前回もその通りになりますと書きましたが...
>>>以前に書きましたが、上記の結果をコピペして整形しております。
>>>その整形と言いますのが、最初にかみちゃんさんが提示された「以下のような>>>感じのもの」そのものに、各倉庫毎(5と6の間、11と12の間、12と13の間...)に>>>出荷数と行数の合計があります。
上記のことが、前回提示しました期待している結果シートイメージです。

>つまり、手作業で、本当に求めたい結果が得られているのか?という疑問を持っ
>ています。
結果をコピペして整形して得られています。

>なお、ひとつだけ確認ですが、データ範囲の設定によるエラーの件は、解決した
>ということでいいですか?
>その報告がないので、どうなっているのか心配しています。
すいませんでした、"Sheet2!C1:C7"を"Sheet2!A:G"に修正して実行しましたら、
無事にかみちゃんさんが、[59015]の後半で示された結果になりました。
説明が悪くて申し訳ありません。
ベクトルは合いましたでしょうか?
よろしくお願いします。

【59023】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 22:56 -

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

>>それであれば、手作業でこのような出力結果を求めることはできているのですよね?
>>その操作を「マクロの記録」で記録したコードが[59005]のコードなのですか?
>そうです。
>>そのコードを再度実行すると、[59015]の後半で私が示した結果になりませんか?
>だから、前回もその通りになりますと書きましたが...

なるほど。
その結果から整形して、期待している結果を得ているということですね。
では、その整形している部分をなぜ、「マクロの記録」で記録していないのですか?
整形部分も記録すれば、「自動化」はほとんど、できると考えています。

>"Sheet2!C1:C7"を"Sheet2!A:G"に修正して実行しましたら、
>無事にかみちゃんさんが、[59015]の後半で示された結果になりました。
>ベクトルは合いましたでしょうか?

エラーは出なくなったということで、一安心しました。
方向性は合いました。

あと、もう一息でご自分で「自動化」のコードができるところまで来ています
ので、もう少しがんばってください。
ここまで、長いスレッドになってしまって心苦しく思っていますので。

決して、私は、ぬらりくらりなコメントをしているわけではありません。
ackkn さんご自身でコードを完成させてほしいという願いを持っています。

そうでないと、
> 誰にでも簡単に頼めないところがあって、何とか自動化したい
自動化した後にトラブルが発生しても、メンテナンス等対応が取れなくなり、
ackkn さんが困ってしまうと考えているからです。

【59025】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/23(日) 23:06 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
>では、その整形している部分をなぜ、「マクロの記録」で記録していないのですか?
>整形部分も記録すれば、「自動化」はほとんど、できると考えています。

>エラーは出なくなったということで、一安心しました。
>方向性は合いました。
よかった。(^o^)

>あと、もう一息でご自分で「自動化」のコードができるところまで来ています
>ので、もう少しがんばってください。
>ここまで、長いスレッドになってしまって心苦しく思っていますので。
とんでもありません、こちらこそ説明が悪くてすいません。

>決して、私は、ぬらりくらりなコメントをしているわけではありません。
>ackkn さんご自身でコードを完成させてほしいという願いを持っています。
>そうでないと、
>> 誰にでも簡単に頼めないところがあって、何とか自動化したい
>自動化した後にトラブルが発生しても、メンテナンス等対応が取れなくなり、
>ackkn さんが困ってしまうと考えているからです。
困ってから、こちらで解決していっては駄目ですかね?
分かりました、マクロ記録してみます。

【59026】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/23(日) 23:15 -

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

>>そうでないと、
>>> 誰にでも簡単に頼めないところがあって、何とか自動化したい
>>自動化した後にトラブルが発生しても、メンテナンス等対応が取れなくなり、
>>ackkn さんが困ってしまうと考えているからです。
>困ってから、こちらで解決していっては駄目ですかね?

ハッキリ言って、それでは、ダメです。
それは、「作成依頼」というものです。
逆ギレではないですが、「甘え」ですよ。

>分かりました、マクロ記録してみます。

がんばってください。

こちらでは、正解に近いコードを用意していますので、きちんと努力した成果を
見せてください。

何度も言いますが、「マクロの記録」でほとんどできあがってしまう案件です。

それが、

> 手動でやっていましたが、手間がかかるのと誰にでも簡単に頼めないところがあ> って、何とか自動化したい

というものです。

【59027】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/23(日) 23:46 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
>こちらでは、正解に近いコードを用意していますので、きちんと努力した成果を
>見せてください。
マクロを記録していて下記の2点に気付いたのですが、

  A  B     C  D
3 データの個数 / 商品名
4 倉庫 等級 出荷数量 合計
5 1780 0022    3  1  ←1.出荷数量は3+5の8にしたいのでは?
6         5  1
7   0022 合計    2  ←2.合計を表示したくない
8 1780 合計       2  ←3.合計は、どうするのでしょうか?
9 1800 0008       2
10  :  :     :  :

1)上記2.は、見出し[等級]をダブルクリックして設定を「なし」にする事で
  解決できました。
2)1.は、この通り8にしたいのですが、この集計結果8を3.の行に表示したい
  ので、上記のダブルクリックでの設定でやろうとしましたが駄目でした。
  そこで、手集計(sum関数)で入れたのですが、これでは毎回位置が変わるので
  自動記録では今回のみにしか通用しないと思った。

これらを自動記録で解決できますか?  
よろしくお願いします。

【59028】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/24(月) 0:00 -

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

>2)1.は、この通り8にしたいのですが、この集計結果8を3.の行に表示したい
>  ので、上記のダブルクリックでの設定でやろうとしましたが駄目でした。
>  そこで、手集計(sum関数)で入れたのですが、これでは毎回位置が変わるので
>  自動記録では今回のみにしか通用しない

その通りです。やっと気づいていただけましたか?

自動記録で100%できるとは、誰も申し上げていません。
多少の修正は必要になります。

ですから、今回のみにしか通用しなくても自動記録はできるはずです。
その記録したコードをどのようなデータでも対応できるように修正すればいいわけ
で、修正の仕方がわからなければ、元データと期待している結果と、現在得られている
結果をきちんと説明すれば、いくらでもアドバイスはさせていただきます。

しかし、今回の場合、毎回、「手集計(sum関数)」をしているのですか?
本当は、手作業の手順は確立されているのではないのですか?
それとも、手間がかかるのは、この部分で、手順もあやふやなのではないでしょうか?

つまり、ピボットテーブルの作り方が間違っていると思います。

あまり長々とスレッドを伸ばすも、本意ではないので、[59005]で提示された
コードのうち、最後の

  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出荷数量")
    .Orientation = xlRowField
    .Position = 3
  End With
  ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _
    "ピボットテーブル2").PivotFields("商品名"), "データの個数 / 商品名", xlCount
  ActiveWindow.SmallScroll Down:=-3

を削除して、以下のコードを最後に追加してください。

  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出荷数量")
    .Orientation = xlDataField
    .Function = xlSum '合計
    .Position = 1
  End With

  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品名")
    .Orientation = xlDataField
    .Function = xlCount 'データの個数
    .Position = 2
  End With

  With ActiveSheet.PivotTables("ピボットテーブル2").DataPivotField
    .Orientation = xlColumnField
    .Position = 1
  End With

'  '「特級」を先頭に移動
'  ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("等級").PivotItems("特級"). _
'    Position = 1

  '「倉庫」ごとの集計をしない
  ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫").Subtotals = Array( _
    False, False, False, False, False, False, False, False, False, False, False, False)
  Range("C6").Select
  '列と行の総計を非表示
  With ActiveSheet.PivotTables("ピボットテーブル2")
    .ColumnGrand = False
    .RowGrand = False
  End With

  '項目名の変更
  ActiveSheet.PivotTables("ピボットテーブル2").DataPivotField.PivotItems("合計 / 出荷数量"). _
    Caption = "出荷数"
  ActiveSheet.PivotTables("ピボットテーブル2").DataPivotField.PivotItems( _
    "データの個数 / 商品名").Caption = "行数"

  ActiveWorkbook.ShowPivotTableFieldList = False
  Application.CommandBars("PivotTable").Visible = False

  '列全体を指定している場合、「(空白)」が集計するため非表示にする
  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫")
    .PivotItems("(空白)").Visible = False
  End With

  MsgBox "データを集計しました"

これらのコードは、ピボットテーブルの一般操作を「マクロの記録」で記録しただけです。

今一度、ピボットテーブルの一般操作をご確認ください。

【59029】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/24(月) 0:10 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
>しかし、今回の場合、毎回、「手集計(sum関数)」をしているのですか?
はい。そうです。
>本当は、手作業の手順は確立されているのではないのですか?
この意味が分かりません。
>それとも、手間がかかるのは、この部分で、手順もあやふやなのではないでしょうか?
>つまり、ピボットテーブルの作り方が間違っていると思います。
すいません、どういうことでしょうか?
ここらが実は今回のポイントのような気がします。
よろしくお願いします。

【59030】Re:ピボットテーブルを自動化したい
発言  ackkn  - 08/11/24(月) 0:23 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
[59028]でご呈示頂きましたコードを入れて実行しました。
しかし、結果は私が[59019]で提示しました期待している結果ではありません。
結果に各倉庫の集計(手集計行)が入っていません。
ご確認下さい、よろしくお願いします。

【59031】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/24(月) 0:34 -

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

>>しかし、今回の場合、毎回、「手集計(sum関数)」をしているのですか?
>はい。そうです。
>>本当は、手作業の手順は確立されているのではないのですか?
>この意味が分かりません。

少し言葉足らずですね。
手間はかかるが、整形処理の手順も決まっているのではないですか?
という問いかけです。
手順が確立されているなら、「マクロの記録」で記録してみれば、いいことなのに
なぜしないのかが不思議なのです。
記録したコードがそのまま使えるというわけではありませんが、修正の基礎になるのは
確かだと思いませんか?

>>それとも、手間がかかるのは、この部分で、手順もあやふやなのではないでしょうか?
>>つまり、ピボットテーブルの作り方が間違っていると思います。
>すいません、どういうことでしょうか?
>ここらが実は今回のポイントのような気がします。

そうですね。そこがポイントです。

まず、「出荷数量」を行フィールドではなく、データフィールドに配置します。
あと、行数をカウントするため「商品名」もデータフィールドに配置します。

そうすると、以下のようになると思います。

   A   B    C           D  E
1
2
3 倉庫 等級 データ           合計
4 1780 0022 合計 / 出荷数量       8
5       データの個数 / 商品名    2
6 1780 合計 / 出荷数量          8
7 1780 データの個数 / 商品名       2
8 1800 0008 合計 / 出荷数量       2
9       データの個数 / 商品名    1
10    0012 合計 / 出荷数量      10
11       データの個数 / 商品名    1
12

この時点で、C3セルの「データ」をD3セル付近にドラッグ&ドロップします。
そうすると、

   A   B     C            D     E
1
2
3       データ
4 倉庫 等級 合計 / 出荷数量 データの個数 / 商品名
5 1780 0022        8           2
6 1780 合計         8           2
7 1800 0008        2           1
8    0012        10           1
9

という形になりませんか?

ご確認ください。

これが確認できないと、私が提示しているコードの意味がまったく理解できないはずです。

> しかし、結果は私が[59019]で提示しました期待している結果ではありません。
> 結果に各倉庫の集計(手集計行)が入っていません。
> ご確認下さい、よろしくお願いします。

「甘えないでください」と言いたいです。
それくらいご自分で調べたらどうですか?

わざわざ
  '「倉庫」ごとの集計をしない
  ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫").Subtotals = Array( _
    False, False, False, False, False, False, False, False, False, False, False, False)

という解説まで、コード内につけているのは、気づいておられますか?

それをはずしてみるということすら試されていないのですか?

それとも、最初から「作成依頼」なのですか?

手作業と「マクロの記録」で記録できることをどれだけの時間をかけて説明
させたら、気が済むのでしょうか?

私は、今日は、これにて休みます。
続きがあるならば、また明日です。

非効率でも、もう答えは出しましたから・・・

【59032】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/24(月) 9:57 -

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

昨夜は、少し言い過ぎたかもしれません。申しわけありません。

>2)1.は、この通り8にしたいのですが、この集計結果8を3.の行に表示したい
>  ので、上記のダブルクリックでの設定でやろうとしましたが駄目でした。
>  そこで、手集計(sum関数)で入れたのですが、これでは毎回位置が変わるので
>  自動記録では今回のみにしか通用しない

今回しか通用しないのかもしれませんが、手順が確立されているならば。
まず、ご自身の手順を「マクロの記録」で記録されることを強くお勧めします。

手順が実は、確立されておらず、あやふやなのであれば、
>> ピボットテーブルの作り方が間違っている
可能性が高いので、[59031]の手順をまずは試してみてください。
それを理解できれば、「マクロの記録」で記録します。

そうすると、
> しかし、結果は私が[59019]で提示しました期待している結果ではありません。
> 結果に各倉庫の集計(手集計行)が入っていません。
がご自分で作れるはずです。

作成依頼なら、まだしも、人に作ってもらうより、自分で作ったほうが
達成感があって楽しいし、なによりコードの流れが理解できるような気がします。
コードを作るのも理解するのも ackkn さんご自身ですから。

「マクロの記録」が記録できて、その修正方法がわからなければ、
そのコードを提示すればいいのです。

時間がなくなってきたので、[59028]で私は、サンプルコードを一部提示
してしまいましたが、時期尚早だったかなとも思います。

なぜなら、ピボットテーブルの操作の理解とそれの「マクロの記録」が先
だからです。

もう少し、ご自身でしたいことを整理して取り組んでいただければと思い
ます。
そして、ご自身で解決したならば、解決結果どういうコードにしたのかを
紹介していただければ、もしかしたら、効率のいい書き方をご紹介して
いただける方がいらっしゃるかもしれません。

私も、そういう観点で、コードは用意してみようかなと思っています。
ただし、それは、あくまで、ackkn さんご自身がどこまでがんばられた
のかによってですが。

【59048】Re:ピボットテーブルを自動化したい
お礼  ackkn  - 08/11/24(月) 21:57 -

引用なし
パスワード
   かみちゃん さん、こんばんは。
レスが遅くなってすいません。
朝から家族サービスで振り回されておりました。m(_ _)m
>   A   B     C            D     E
>1
>2
>3       データ
>4 倉庫 等級 合計 / 出荷数量 データの個数 / 商品名
>5 1780 0022        8           2
>6 1780 合計         8           2
>7 1800 0008        2           1
>8    0012        10           1
>9
>という形になりませんか?
>ご確認ください。
はい、この通りになりました。
>> しかし、結果は私が[59019]で提示しました期待している結果ではありません。
>> 結果に各倉庫の集計(手集計行)が入っていません。
>> ご確認下さい、よろしくお願いします。
>「甘えないでください」と言いたいです。
>それくらいご自分で調べたらどうですか?
この件は、別に甘えた訳ではありません。
以前より、実行結果を細かく確認されておられましたし、
「私がまだ勘違いしていましたら、ご指摘ください。」とも
仰っておられましたので、正直に結果を書かせて頂いただけです。
勿論、内容も確認しましたので、コード内に"'「倉庫」ごとの集計をしない"
と"'列と行の総計を非表示"を付けて頂いていたのは知っておりましたし、感謝
しておりました。
よって、その2カ所をコメント化して実行もし、期待した通りの結果も確認して
おります。
>最初から「作成依頼」なのですか?
確かにマクロ自動記録による努力を怠ったことは認めますが、
決してそんなつもりはありません。
>昨夜は、少し言い過ぎたかもしれません。申しわけありません。
いえいえ、とんでもありません。
こちらこそ整理が悪く、長々とお付き合いさせまして申し訳ありませんでした。
本当にありがとうございました。
私のような者ですが、これに懲りず今後ともよろしくお願い致します。
>そして、ご自身で解決したならば、解決結果どういうコードにしたのかを
>紹介していただければ、もしかしたら、効率のいい書き方をご紹介して
>いただける方がいらっしゃるかもしれません。
ありがとうございます。
再度[59031]を記録し、今回のコードと比較しながら流れを確認します。

【59049】Re:ピボットテーブルを自動化したい
発言  かみちゃん E-MAIL  - 08/11/24(月) 22:09 -

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

>朝から家族サービスで振り回されておりました。m(_ _)m

おつかれさまです。
多くは、三連休でしたからね。

>私のような者ですが、これに懲りず今後ともよろしくお願い致します。

はい。こちらこそ、今後ともよろしくお願いします。
ただし、質問される際は、元データと、期待している結果と、現在できている
コード(コードがなければ、手作業で確認し、確認できれば、その作業を「マクロ
の記録」で記録)を提示し、そのコードで得られる結果を示すようにしましょう。

シートイメージを示される場合は、
  A  B  C
1
2
3

という感じで、行列番号も説明していただけると助かります。

>>そして、ご自身で解決したならば、解決結果どういうコードにしたのかを
>>紹介していただければ、もしかしたら、効率のいい書き方をご紹介して
>>いただける方がいらっしゃるかもしれません。
>ありがとうございます。
>再度[59031]を記録し、今回のコードと比較しながら流れを確認します。

そうですね。
確認が終われば、最終的にどのようなコードにしたか紹介していただけると、
過去ログとしても有用になると思いますので、ぜひご協力ください。

なお、私が提示したマクロも実は、もっと効率のいい書き方があることだけは
申し添えておきます。

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