[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでピボットテーブルから数値を取得し合計したい』(ぽんくら)
VBA初心者です。
以下のようなピボットテーブルをマクロで作成しました。ここから台数が9台以下の値(台数含む)をそれぞれ取得し合計したいのですが、そのマクロをどのように書けばよいのかわかりません。
ピボットテーブルではすでに以下のような抽出を行っています。
・ユーザーの値フィルタで原価:500円以上で抽出しています。
・ピボットの元データでは、ユーザー→型番ごとに台数や金額を表記しているのですが、ピボットテーブルではユーザーごとの合計を表示しています。
型番にかかわらずユーザーごとの数値で算出する必要があるため、オートフィルタでは抽出できませんでした。
また、データは毎日追加されていくため、ピボットテーブルの行範囲は変化します。
以上を踏まえてマクロを教えていただきたいです。お願いいたします。
値
商品分類 ユーザー 合計/台数 合計/売上額 合計/原価
A A株式会社 5 1000 500
B食品 10 5000 3000
C販売 8 2500 1000
D株式会社 12 3000 1500
B E株式会社 6 2000 1200
F共済 9 5000 2600
総計 50 18500 9800
< 使用 Excel:Excel2013、使用 OS:Windows7 >
エラーメッセージ「'Range'メソッドは失敗しました:' Global'オブジェクト」
Sub テスト()
Dim c As Variant
Dim d As Variant
Dim e As Variant
Dim niNo As Double
Dim niSale As Double
Dim niCost As Double
c = Range("C" & Rows.Count).End(xlUp) ’C列の最終行
d = Range("D" & Rows.Count).End(xlUp) ’D列の最終行
e = Range("E" & Rows.Count).End(xlUp) ’E列の最終行
niNo = WorksheetFunction.SumIf(Range("C5:" & c), "<=9", Range("C5:" & c)) ’ここでエラー
niSale = WorksheetFunction.SumIf(Range("C5:" & c), "<=9", Range("D5:" & d))
niCost = WorksheetFunction.SumIf(Range("C5:" & c), "<=9", Range("E5:" & e))
Range("D33").FormulaR1C1 = niNo
Range("E33").FormulaR1C1 = niSale
Range("F33").FormulaR1C1 = niCost
End Sub
(ぽんくら) 2018/12/12(水) 15:55
c = Range("C" & Rows.Count).End(xlUp)
でcに入ってくるのはC列の最終行のセルの値。
最終行の行番号を求めたければ
c = Range("C" & Rows.Count).End(xlUp).Row
また最終行を求めたとしても
"C5:" & c
はC5:10とかの形になる
"C5:C" & c
で。
(ねむねむ) 2018/12/12(水) 16:04
あと、SUMIF関数で合計範囲と条件範囲が同じ場合は後ろの合計範囲を省略できる。 (ねむねむ) 2018/12/12(水) 16:07
(きまぐれ) 2018/12/12(水) 16:10
できました!ありがとうございます!
最終行のセルの値を取得するコードと行番号を取得するコードの区別がついていませんでした。
また、省略できることも教えていただきありがとうございます!
(ぽんくら) 2018/12/12(水) 16:17
コメントいただきありがとうございます!
台数と原価を行フィールドに移動して値フィルターを指定すると、ユーザーごとの合計とならないため、今回はねむねむさんに教えていただいたコードを使用しました。
(ぽんくら) 2018/12/12(水) 16:34
行フィールド
商品分類
ユーザー
台数
原価
値エリア
合計/台数
合計/売上額
合計/原価
(きまぐれ) 2018/12/12(水) 18:02
詳細にありがとうございます。
ユーザーのフィルタをクリアし、行フィールドに追加でもやってみたのですが、原価500円以上かつ台数9台以下のユーザーはうまく抽出できませんでした。。。
(ぽんくら) 2018/12/13(木) 10:53
台数のドロップダウンで
値フィルター → 指定の値以下
左のリスト 合計/台数
中央 TextBox 9
右のリスト 以下
原価のドロップダウンで
値フィルター → 指定の値以上
左のリスト 合計/原価
中央 TextBox 500
右のリスト 以上
(きまぐれ) 2018/12/13(木) 11:56
ひとつひとつ詳細にありがとうございます。
おっしゃっているやり方では希望の数値は抽出できないので、私の説明がわかりづらかったのかもしれません。今回の問題は解決しているのですが、今後のためにきまぐれさんのやりかたも理解したかったため米返信していました。
ありがとうございます。お手数をおかけしました。
(ぽんくら) 2018/12/13(木) 16:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.