EXCEL2000 VBAでGETPIVOTDATA関数を使うには

このQ&Aのポイント
  • Excel2000でVBAでGETPIVOTDATA関数を使用する方法について教えてください。
  • VBAでGETPIVOTDATA関数を使ってセルにデータを表示しようとしていますが、うまくいきません。
  • 代わりにSeeht1.PivotTables(1).GetDataを使用していますが、エラーが発生します。VBAでGETPIVOTDATA関数と同様の機能を実現する処理方法を教えてください。
回答を見る
  • ベストアンサー

EXCEL2000 VBAでGETPIVOTDATA関数を使うには

Excel2000です。 VBAで、GETPIVOTDATA関数を使用したいのですがうまくいきません。 セルですと、例えば=GETPIVOTDATA('sheet1'!A1,"DATA1 DATA2 DATA3")をworksheetfunction.getpivotdata(sheet1.range("A1"), "DATA1 DATA2 DATA3")で表示してもうまくいきません。 代わりに、Seeht1.PivotTables(1).GetData("DATA1 DATA2 DATA3")を記入すると、例えばDATA2(フィールド2)に値がない場合エラーになります。 どなたか、VBAでgetpivotdataと同等な働きをする処理方法を教えていただけませんでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

GETPIVOTDATAはVBAからは使えないようです。 VBAで使用できるワークシート関数一覧 http://www.relief.jp/itnote/archives/001974.php Application.Evaluateメソッドを使えば良いかもしれません。

Zeke_levin
質問者

お礼

回答ありがとうございます。 そうなんですかぁ。でも Application.Evaluate("=GETPIVOTDATA(Sheet1!A1,""DATA11 DATA2"")") と、ISERROR関数の組み合わせで結果を得られることができました。 あきらめかけていましたので本当に助かりました。

その他の回答 (1)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

こんなのがありましたが関係ないでしょうか。 Office 2000 Service Pack 3 で修正される Excel 2000 の問題 http://support.microsoft.com/kb/326667/ja

Zeke_levin
質問者

お礼

ありがとうございます。 確認しましたところ、SP3は入っていましたので、別の問題のようです。。。

関連するQ&A

  • VBA Match関数の使い方について

    お世話になります ご教示頂けたら幸いです シート結果セルE4の値を検索してシート結果G4の値を 検索行のB列に値を転記したいです 下記のように書くとMatch関数行でエラーが出てしまいます どの様にすればいいのでしょうか? お手数おかけしますが 何卒よろしくお願いいたします With Sheets(Worksheets("結果").Range("A4").Value) WorksheetFunction.Match(Worksheets("結果").Range("E4").Value, Range("A1:A1000"), 0).Offset(3) = _ Worksheets("結果").Range("A4").Offset(2).Value End With

  • countif/sumifのようなVBA関数

    こんにちは エクセルVBAで配列aをワークシート関数countifで計算したいのですが、できないようです。代わりになるVBA関数はないでしょうか?もしくは、代替可能な方法はないでしょうか?sumifの代わりもご教示ください! よろしくお願いします。 --------------- a(0)=1 a(1)=10 a(2)=100 msgbox worksheetfunction.countif(a,">50") 'ここでエラーとなる。 -- エクセル2003

  • VBA ワークシート関数のエラー

    シートに数式を入れていたものを、VBAで値のみ入力しようと考えています。 そこで、.Cells(1,1) = WorksheetFunction.数式といった形のメソッドを試しています。 しかし、複雑な数式を記述するとエラーが出てしまいます。 成功 (iferrorというワークシート関数が1つ) Debug.Print WorksheetFunction.IfError(1 / .Cells(1, 5) + 1 / .Cells(1, 6) + 1 / .Cells(1, 7) - 1, "P") 失敗(ワークシート関数のifとcountifなど複数のものが数式に混入) Debug.Print WorksheetFunction.If(CountIf(Range("C17:D49"), Range("C29")) > 5, Range("C29"), Range("D29")) Countifの場所でエラーになります。このcountifを使えるようにするためには、どうすればよいのでしょうか? WorksheetFunction.if(WorksheetFunction.Countif(、、、、という書き方はダメでした。 数式が汚くてすみません。 宜しくお願いいたします。

  • EXCEL-VBA の round関数

    EXCEL-VBAで Cells(1, 1) = Round(Cells(3, 3), 0) として、 C3 に28.5 を入力し、上のマクロを実行すると、 A1には、28と表示されてしまいます。 ワークシート関数の =round(c3,0) を他の適当なセルに入力すると、 その返り値は、29 とちゃんとなります。 c3が 28.5001 とかだと両者ちゃんと 29 となります。 これは、VBA関数のバグなりスペックなのでしょうか?

  • Excel VBAの SUM関数について質問です。

    Excel VBAの SUM関数について質問です。 SUM関数で合計の値を出す場合、 SUM(A1:A5)という関数で合計を出しますが SUM(sheet2.cells(1,1),sheet2.cells(5,1)) と言ったようにCellsで指定はできないのでしょうか? 複数の列にVBAのプログラムで合計の値を出したいのです。 WorksheetFunction.SumではSUM(A1:A5)のように 自動計算にならないと思うので・・・

  • Excel-VBA rangeプロパティの使い方について

    Excel-VBA rangeプロパティの使い方について VBA初心者です。いろいろ調べたのですが、分からないので教えてください。 ThisWorkbookのSheet1のA1セルに、aというファイルのaというシートの特定のセルの値をコピーしたいです。 コピーする値のセルは、ThisWorkbookで入力した値を基に変数で記述したいです。 例えば、ThisWorkbookのSheet1のC2セルに「D1」と記載していたとして、その値を変数として設定して、最終的にaというファイルのaというシートの「D1」セルをThisWorkbookのA1セルに貼り付けるのが目的です。 この場合の、下記のhensuu = の設定方法について、ご教授願います。 hensuu = ThisWorkbook.Sheets("Sheet1").Range(“A1”)= Workbooks(a).Sheets(a).Range(hensuu)

  • EXCEL関数について

    EXCEL関数について Sheet1、A1~A1000セルに「1~10」までの値がランダムに入力されております。 数字は「グループ1」、「グループ2」・・・という意味です。 B列、B1~B1000セルには「1~4」までの値がランダム入力されております。 B列については、空白のセルもあります。 Sheet2、A1~A10セルに、「1~10」までの値、「グループ1」~「グループ10」までが順に入力されております。 ここで、Sheet2、B列~E列、それぞれの1~10セルを使用し、、 それぞれの「グループ」がSheet1にて「1~4」の値をいくつずつ選んでいるか算出したいのです。 「グループ1」について、「1」のカウントはB1セル、「2」のカウントはC1のセルに返します。 同じように「グループ2」はB2~E2のセルに、「グループ3」はB3~E3のセルに値を返したいのです。 「COUNTIF」等の関数でいろいろと試してみたのですがうまく反映されません。 拙文乱文、大変恐縮ですが、ご教示頂きたく何卒宜しくお願い致します。

  • VBAのxlDownと同じ昨日の関数

    VBAでRange("A5").End(xlDown).Rowとしたら、A5から下方向にデータが連続して入力されている 最終行を返しますが、これと同じ機能を持ったエクセル関数はありますか? 今、A5からA10までデータが入っていたら、 初めて空白セルが存在する一つ上のセルの行の「10」という値か A5からA10まで6行データが入力されているので、「6」という値を取得したいです。 出来れば、後者がありがたいです。 Counta関数を使って、 COUNTA($A:$A)-COUNT($A$1:$A$4)と書きましたが、A12以降に値が入っていたら、対応できないので上手くないかなと思います。

  • Excel2007 VBAでいくつか質問

    Excel2007 VBAでいくつか質問 お世話になります、 本来ならこんなタイトルではいけないのでしょうが、 お許しください。 さて、 いくつかの質問にお付き合いください。 一、サブルーティンやファンクションなどの引数で取得したレンジが、どのシートにあるか レンジ引き渡し時に指定がある場合 シート名を取得する方法ってありますか? 一、これって駄目なんですか? (※:変数宣言などはされているものとします) tempranges2=Application.WorksheetFunction.MIN(INDEX((Sheet2!A2:N33<>"")*COLUMN(Sheet2!A2:N33)+(Sheet2!A2:N33="")*900000,,)) 一、これって何処が駄目なんですか? dim My_ranges As range My_ranges=sheets(1).range(cells(1,1),cells(30,30)) 宜しくお願い致します。

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

専門家に質問してみよう