Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : その他)
ピボットテーブルの任意のフィールドの各行番号が取得できないか?
投稿日時: 20/03/24 15:11:24
投稿者: Alice87

ピボットテーブルで、特定のフィールドの行番号を取得できないかと考えています。
(イメージは下記のようなデータで、「A社」、「B社」・・・となっているフィールド。ピボットテーブルで
下向き矢印状態になった時にクリックすると選択されるフィールドであります。)
 
Excelで自動取得できるので、VBAで行番号を取得できないかと思ったのです。
(ある企業内の範囲のみデータの取得をしたい為、今回質問で挙げた行番号が取得できれば、処理対象範囲が容易に取得できると思った為。)
 
何かアドバイスがあれば、書き込んで下さると幸いです。
 
宜しくお願い致します。
 
    値    
行ラベル 合計 / 〇〇金額(請求)    合計 / 〇〇金額(計上)
A社      0     
948B      -602,000    
949B      602,000     
B社      3,780,300      3,780,300
3017      3,780,300      3,780,300
C社     501,220      501,220
1084     147,000      147,000
1174     56,500      56,500
1192     147,000      147,000
3005     79,900      79,900
3852     70,820      70,820

回答
投稿日時: 20/03/24 18:42:19
投稿者: mattuwan44

                                                                          
  納品日      産地    品名    数(ケース)  単価  金額    納品先       
  2009/1/11   和歌山  みかん             5  2000   10000  山田商店
  2009/1/9    青森    りんご            20  1800   36000  いろはスーパー  
  2009/1/23   兵庫    いちご            15  1500   22500  ABCマーケット  
  2009/2/12   和歌山  みかん             8  2200   17600  山田商店       
  2009/1/31   熊本    みかん            55  1750   96250  双葉商事    
  2009/3/1    青森    りんご            12  2100   25200  ABCマーケット
  2009/2/18   長野    りんご            30  1600   48000  双葉商事        
  2009/3/5    香川    みかん            10  2500   25000  ABCマーケット
  2009/2/3    福岡    いちご            40  1850   74000  いろはスーパー   
  2009/2/20   福岡    いちご            38  1800   68400  いろはスーパー                                                                          
  2009/3/3    広島    みかん            15  1200   18000  山田商店
  2009/1/15   和歌山  みかん            15  2150   32250  双葉商事
  2009/1/4    青森    りんご            22  1350   29700  ABCマーケット  

 
こんなデータで、
                                                                                                      
  合計 / 金額   列ラベル
  行ラベル      ABCマーケット  いろはスーパー  山田商店  双葉商事  総計
  いちご                 22500          142400                      164900
   2009/1/23            22500                                       22500
   2009/2/3                             74000                       74000
   2009/2/20                            68400                       68400
  みかん                 25000                     45600    128500  199100
   2009/1/11                                      10000             10000
   2009/1/15                                                32250   32250
   2009/1/31                                                96250   96250
   2009/2/12                                      17600             17600
   2009/3/3                                       18000             18000
   2009/3/5             25000                                       25000
  りんご                 54900           36000               48000  138900
   2009/1/4             29700                                       29700
   2009/1/9                             36000                       36000
   2009/2/18                                                48000   48000
   2009/3/1             25200                                       25200
  総計                  102400          178400     45600    176500  502900 

 
こういう感じのピボットテーブルのとき、
例えば、「りんご」を指定したとして、
それに対する何の情報が欲しいのですか?

投稿日時: 20/03/25 10:09:51
投稿者: Alice87

mattuwan44様
 
早速の書込みありがとうございます。
 
>例えば、「りんご」を指定したとして、
>それに対する何の情報が欲しいのですか?
 
→この例でいうと、2009/1/4の総計 29700と同額が、2009/1/9〜2009/3/1の間にあるかどうかの情報を得たいのです。
その為に検索該当範囲がどこまでか取得したく、今回の質問を挙げました。
 
シンプルな構文で解決する方法がないようであれば、こちらで現在作業しているピボットテーブルデータの「行ラベル」に表記されている文字や数字によって検索終了範囲を判別することも考えています。
 
宜しくお願い致します。
 

回答
投稿日時: 20/03/25 14:33:53
投稿者: n

Dim s
Dim r As Range
Set s = Selection
ActiveSheet.PivotTables(1).PivotSelect "C社", xlDataOnly
Stop
Set r = Selection
Debug.Print r.Address
s.Select
..的な。
 
旧バージョン(RowAxisLayout xlTabularRow)だと
Set r = ActiveSheet.PivotTables(1).PivotFields("社名").PivotItems("C社").DataRange
で取得した範囲を拡張すれば良かった気がするんだけど :|

投稿日時: 20/03/25 14:58:31
投稿者: Alice87

n様
 
貴重なアドバイスありがとうございます。
 
n様からのアドバイスと下記サイトの操作方法を組み合わせて、取得したかった行番号が得られました‼
 
http://www.k1simplify.com/vba/tipsleaf/leaf240.html
 
本当にありがとうございます。大変感謝しております。