• 締切済み

ピボットフィールドの入れ替え

Excel2003を使用しております。 ピボットテーブルを利用してレポートを作成しています。 一つのデータに外貨と円貨があり、場合によって集計の項目を円貨または外貨に換えたいと思っております。 円貨と外貨とスイッチさせる時にエラー(集計項目が円貨と外貨二つになってしまったり、項目がないのでダメ、など)がでます。 .PivotFields("円貨").Orientation = xlDataField xlDataField の取得(項目数と名前)ができたら、スムーズにできるのではないかと思うのですが、そのあたりご教授願えるとありがたいです。 よろしくお願いいたします。

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>xlDataField の取得(項目数と名前)ができたら、 Dim pf As PivotField With ActiveSheet.PivotTables(1)   Debug.Print .DataFields.Count   For Each pf In .DataFields     Debug.Print pf.Name   Next End With ...とか。 他、PivotTableなどの構造を調べるのは、 [ローカルウィンドウ]を活用すると良いでしょう。 Sub try()   Dim pv As PivotTable   Set pv = ActiveSheet.PivotTables(1)   Stop 'ここで[ローカルウィンドウ]で探ってみる。   Set pv = Nothing End Sub

関連するQ&A

  • vb2005でexcelピボットテーブルを使いたい

    使用環境は VB2005express ,excel2000 です。 VB6.0からVB2005へコンバートをしているのですが、excelのピボットテーブルの操作のところで 上手くいきません。具体的には、行列のタイトルを書き込むところまでは上手くいったのですが 中身のデータ貼り付けのところがわかりません。 宜しくお願い致します。   【以下VB6.0】 一部抜粋 With xlSheet.PivotTables("テーブル") .PivotFields("場所").Orientation = xlRowField  .PivotFields("日").Orientation = xlColumnField ’↑ここまではOKですが、以下が上手くいきません。 .AddDataField xlSheet.PivotTables("テーブル").PivotFields("数"), "データの個数 / 数",xlCount .PivotFields("データの個数 / 数").Function = xlSum .AddDataField xlSheet.PivotTables("PV_MECH").PivotFields("重量"), "デ ータの個数 / 重量", xlCount End With 【以下VB2005】  With BOOK.Worksheets(SHEETNAME).PivotTables("PV_MECH") .PivotFields("場所").orientation = Excel.XlPivotFieldOrientation.xlRowField .PivotFields("名").orientation = Excel.XlPivotFieldOrientation.xlRowField  ’↑ここまではOKですが、以下が上手くいきません。 '.PivotFields("数") = Excel.XlPivotFieldCalculation.xlPercentOfTotal '× .PivotFields("数").orientation = .PivotFields("数") '?

  • EXCELマクロのピボットテーブル

    G列に名前、0列に点数があります。 ピボットテーブルで 名前, 平均/点数, 個数/点数 と横に表記したいのですが、 名前, 平均/点数,      個数/点数 と2行分かれて表記されます。 マクロは以下です。どこをどう変更したらよいでしょうか。 'ピボットテーブル作成 Dim pvt As PivotTable Dim rngData As Range Set rngData = ActiveSheet.Range("A1").CurrentRegion Sheets.Add Set pvt = _ ActiveWorkbook.PivotCaches.Add( _ SourceType:=xlDatabase, _ SourceData:=rngData). _ CreatePivotTable(TableDestination:=Range("A3")) With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.DataFields(1).Function = xlAverage With pvt .PivotFields("名前").Orientation = xlRowField .PivotFields("点数").Orientation = xlDataField pvt.DataFields(1).Function = xlCount End With End With '

  • ピボットテーブルのマクロについて

    ピボットテーブルのマクロについて教えてください。 NO 場所  ランク 面積 1  東京  上    10 2  大阪  上    20 3  福岡  中    20 4  広島  中    30 5  東京  中    15 6  東京  中   25 7  大阪  下   35 8  福岡  下   45 9  大阪  下   10 10 大阪  下   10 という表があり、 場所ごとランクごとの面積集計を ピボットテーブルのマクロを組んで実施したい のですが(同じ作業を繰り返すので)、 マクロを記録して、内容を実行しようとすると、 「実行時エラー」が出てしまいます。 記録したマクロは以下の通りです。 ( → ←のところでエラーが出ます) Sub Macro1()  ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _   "Sheet1!C2:C4").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  ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _    "ピボットテーブル2").PivotFields("面積"), "データの個数 / 面積", xlCount  Range("A3").Select  ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("データの個数 / 面積 ").Function = _  xlSum End Sub ピボットテーブルのフィールドリストがうまく挙がってこないようなのですが、 どのようにマクロを組み直せば、よいのでしょうか? 作りたい集計表は、以下のようなものです。 場所 ランク  合計 広島  中   30  集計     30 大阪  下   55     上    20  集計     75 東京  上   10     中    40  集計     50 福岡  下   45     中    20  集計     65 総計      220 長々とまた見づらくてすみません。 よろしくお願いします。

  • マクロでピボットテーブルを作成したい

    こんばんは。マクロの自動記録を使って、ピボットテーブルを作成したのですが、記録した時のシート名とデータ範囲で記録されてしまいます。アクティブシートのデータがある範囲をピボットテーブルにしたい時は、どうすれば良いでしょうか? 以下のコードが自動記録で作成したコードです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "シート名!R1C1:R1000C30").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 Range("A9").Select ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品番号").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("数量 "), "データの個数 / 数量 ", xlCount With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("発送日 ") .Orientation = xlPageField .Position = 1 End With Range("A1").Select ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("発送日 ").Orientation = _ xlHidden With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("希望時期") .Orientation = xlColumnField .Position = 1 End With

  • マクロでピボットテーブルを行う方法

    マクロ初心者です。よろしくお願い致します。 マクロでピボットテーブルにて集計を行いたいと思っています。 コマンドボタン1発で以下の全ての動作を行いたいです。 ■動作詳細■ [OK]コマンドボタンで指定したファイルを開く。 [OK]集計しやすいようにファイル内のデータを加工。 [NG]指定して開いたファイル上でピボットテーブル集計ができない。 ■NG要因として■ 指定して開いたファイルのSheet1上のデータをピボットテーブル新規作成でSheet2に作成するので、集計する元のデータの場所(Sheet1)をマクロ上に記載する必要があると思うのですが、うまくいきませんでした。 どなたかお分かりになる方がいらっしゃいましたらご助言いただければと思います。よろしくお願いします。 ■作成マクロ■ ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "test01!C1:C8").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 = xlColumnField .Position = 1 End With ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル2").PivotFields("売上"), "データの個数 / 売上数量", xlCount 一度、作成したピボットテーブルのデータをマクロにコピーしてコマンドボタンにペーストしました。 それによって参照してあるセルの位置もズレてしまったのでしょうか? どこを直せばよいのか分からなくなってしまいました。 よろしくお願いいたします。

  • ピボットテーブルのフィールドリストについて

    現在、ピボットテーブルでデータを集計していますが、月ごとの集計の仕方で悩んでいます。 ピボットテーブル作成はど素人です。 そこで、教えていただきたいのですが、 使っている経理のソフト(エクセル)があります(ネットでダウンロードしました)。 そのソフトでは、仕訳帳シートがピボットテーブルの元のシートになっていて、 別シートにピボットテーブルのシートがあります。 なぜか、仕訳帳シートにはない項目(フィールド)がピボットテーブルリストにはあり、 その方法を知りたいのです。 仕訳帳シートでは、日付の項目しかないのに、ピボットテーブルのフィールドリストには、「日付」のほかに「集計月」という名前のフィールドがあるんです。 この「集計月」のリストはどうやれば作れますか? ちなみに、グループ化という方法も試してみましたが、 まだ未定の行には日付が入力されていないため、 グループ化ができないみたいです。 エクセル2010です。 用語などよくわかっていないので、お手数ですが、わかりやすく教えていただけると助かります。 カテゴリがあっているのかわかりませんが、どうぞよろしくお願いいたします。

  • マクロでピボットテーブルを作成

    マクロでピボットテーブを作成したいのですが、範囲指定がうまくいきません。 Workbooks.Open Filename:="C:\出庫実績.csv" Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "出庫実績!R1C1:R458C24").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル1", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("店舗名称").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="店舗名称" ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("出庫数ケース").Orientation = _ xlDataField 出庫実績csvのデータは日々変わる為、範囲の選択がうまくいかず、ピボットテーブルの合計数が合いません。よろしくお願いします。

  • ピボットテーブルで再表示したい

    EXCEL2000でピボットテーブルを使って集計してます。 ある項目が不要だったので「表示しない」設定にしたのですが それを再表示させるにはどうすればよいのでしょうか? ご教唆お願いいたします。

  • ピボットテーブルの範囲を可変にしたい

    ピボットテーブルのマクロを作っています。 「発注データ」というシートの隣に新しいシートを追加し そこにピボットテーブルを作成するという内容です。 シート名の「発注データ~」と参照範囲「R1C1:R477C8」の部分が毎回変わるため (列は固定で行数が増減)それに対応した記述にしたいのですが どのように変えたらいいのでしょうか? アドバイスよろしくお願いします。 以下マクロ記録で作成してみました。 Sub pivot() ' pivot Macro Sheets.Add ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "発注データ20170202!R1C1:R477C8", Version:=xlPivotTableVersion15). _ CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="ピボットテーブル1" _ , DefaultVersion:=xlPivotTableVersion15 Sheets("Sheet1").Select Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("課") .Orientation = xlColumnField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品番") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品コード") .Orientation = xlRowField .Position = 2 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名1") .Orientation = xlRowField .Position = 3 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名2") .Orientation = xlRowField .Position = 4 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("棚番号") .Orientation = xlRowField .Position = 5 End With With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価") .Orientation = xlRowField .Position = 6 End With ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _ "ピボットテーブル1").PivotFields("数量"), "合計 / 数量", xlSum ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("品番").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品コード").Subtotals = Array _ (False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名1").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("製品名2").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("箱番").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("単価").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("数量").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("課").Subtotals = Array( _ False, False, False, False, False, False, False, False, False, False, False, False) ActiveSheet.PivotTables("ピボットテーブル1").RowAxisLayout xlTabularRow End Sub

  • ピボットテーブルをマクロで行なうには

    以下3行目が項目でデータレコードが4~588行目迄入っています。(行数は毎回変わります) これをピボットテーブルで 縦列に"分類" 横行に"月" フィールドに"受注額(合計)" としたく以下マクロ記録しましたが次に実行しようとするとうまくいきません。 参考書読むとActiveSheetとEnd(xlUp)を使うのかなと思えたのですが 具体的にどのようしたら良いのか宜しく御願いします。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "'Aシート'!R3C1:R588C12").CreatePivotTable _ TableDestination:="", TableName:="ピボットテーブル1" ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select With ActiveSheet.PivotTables("ピボットテーブル1") .DisplayNullString = False .RowGrand = False .SmallGrid = False End With ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:="分類", _ ColumnFields:="月" With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("受注額(合計)") .Orientation = xlDataField .NumberFormat = "#,##0_ ;[赤]-#,##0 " End With End Sub

専門家に質問してみよう