アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
Excel2016にて作業をしておりますが、上手くいかないのでお知恵をお貸しいただきたく質問いたします。

【概要】
ピボットテーブルの範囲指定を変数にしたい

【詳細】
"データ貼付"というシートに、下図のようにデータが並んでいます。
A列とB列、C列とD列、E列とF列……というように2列ずつのデータがセットになっており、
セットごとにデータの個数が異なるこの2列を1つのピボットテーブルにしたいと考えています。

    A列 B列 C列 D列 E列 F列……
1行目 A  B  C  D  E  F
2行目 A  B  C  D  E  F
3行目 A  B  C  D  E  F
4行目 A  B  C  D  E  F
5行目 A  B        E  F

sourceArea = "データ貼付!A2:B" & Sheets("データ貼付").Cells(Rows.Count, "A").End(xlUp).Row

現状範囲指定がこのようになっていますが、この「A2:B」をC2:D、E2:F……と繰り返したい場合に、
どのように指定すればよいかわからずにおります。

ご助言をいただけますと大変ありがたいです。よろしくお願いいたします。

質問者からの補足コメント

  • 範囲指定の部分ですが、

     sourceArea = "データ貼付!A2:B" & Sheets("データ貼付").Cells(Rows.Count, "A").End(xlUp).Row

     Dim pCashData As PivotCache
     Set pCashData = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
    SourceData:=wsBaseName & "!" & sourceArea)

    こんな感じで指定しています。
    A2:Bで新しいシートにピボットテーブルを作成、次はC2:D、E2:F……と列が続く限り繰り返します。
    よろしくお願いいたします。

      補足日時:2019/04/18 22:16

A 回答 (1件)

こんにちは



>範囲指定を変数にする
とのご質問ですが、すでに変数(sourceArea)にはなさっているようなので・・
この値をどのように求めたら良いのか(計算処理したら良いのか)という意味と解釈しました。

>……と繰り返したい場合に、
とありますが、どのような繰り返しの方法を用いていらっしゃるのか不明なので、勝手に列に対するループとして以下に例を示しておきます。
必要になるのは、セル範囲を示す文字列でしょうから、そちらを直接求める方法に変えています。

以下は、2列毎を1セットにして、その「左側の列を基準にした最終行までの範囲」を表す文字列を順に表示する例です。
(変数 cellRange にセル範囲の文字列を代入しています)

Sub Sample()
For col = 1 To Cells(1, Columns.Count).End(xlToLeft).Column Step 2
cellRange = Cells(1, col).Resize(Cells(Rows.Count, col).End(xlUp).Row, 2).Address
MsgBox "第" & col & "列の範囲: " & cellRange
Next col
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
希望の動きをしてくれました。

お礼日時:2019/04/23 14:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!