※間違ってたらすみません。※メモ書きなので、自分でも意味不明な箇所も多いです。Excel2000用のピボット自動作成(ソース表の行列増減可変)のコード※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。はじめに今目の前にある表から、ワンクリックでピボットテーブルの作成ができると大変便利です。本記事ではそれを可能にするプログラムをご紹介させて頂きたいと思います。(ピボットが広まらない大きな理由のひとつに、「よくわからない・作るのが面倒」ということがあると思いますのでその解決としてもご利用してほしいと願います。初心者の方ほど、この記事を誰かに読んでもらって、処置してほしいと思います。)本記事の例では、一応、「今見ている表」が、1シートに1つの表で、かつ、A1セルから横がすべて列名で埋まっている、かつ、空白行・空白列も無い、セル結合も無い、という表に限っています。それでないとプログラムが正常に動きません。表が「A2セルやB2、B4、C3、・・・・」などから始まっている、つまり、表の上や左に空白行や空白列があるケースは想定していません。後述のVBAプログラムのコードをPersonal.xlsやxlsbの標準モジュールにコピペして、リボン(またはクイックアクセスツールバーなど)にメニューボタン化します。すると、今見ている表から、「ソースの表の行や列が増減しても範囲の再設定が必要が無いピボットテーブル」がワンクリックで作れるようになります。Query(SQL)の抽出結果の表であってもOKです。登録」などでGoogle検索してみてください。(リボンへのメニューボタン化・関連の記事5つ→1、2、3、4、5。)(「Personal.xlsやxlsb」とは、『すべてのExcelファイルで使える共用機能を作るための特殊なExcelファイル』のことです。)※なお、このコードをリボン(またはクイックアクセスツールバーなど)にメニューボタン化していない場合は、例えばExcel2010の場合なら、開発タブ→マクロ→PERSONAL.XLS!Excel2010_MakePvt01(あるいはPERSONAL.XLS!Excel2k_MakePvt01)などで実行できます。このコードは、ピボットのソースにしたいシートを開いておき、(一応念のために、)その中のどこでもいいのでどれか1つのセルをクリックしてから実行します。(集計による)調べ物をしたいときに便利ですし、無駄な関数やVBAを減らすことにも多少なりとも貢献できると思います。ピボットのソースの表を「=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1))」を使って名前の定義をしておきますので、ピボットのソースの表の側で列や行が増減しても、その範囲の再設定は必要ありません。(逆に言うと、このピボットを作ったのちに、ソースの表の内容を全く別のものに入れ替えてピボットを更新すれば、フィールドリストの内容も新しいソースの内容が反映されます。フリガナの音読み訓読み、スペース、その他の入力ミスの調査」「簡易アンケート調査」等々をしたい時にもさっとやれるので便利です。名前の定義のときの名前を自由に設定したかったり、さらに新しいシートにどんどんと新しいピボットを作りたい時、あるいは、ピボットを新しいシートではなくて現在のシートに作りたい場合などは、少し作り変えが必要です。その部分は「VBAでのピボット作成」のことを知らなくてもでき、特に困難ではありません。ご自分でできなかったら、ExcelVBAのできる人に作り変えてもらってください。やってもらえると思います。(※ちなみにですが、すでに同名の「名前の定義設定」があったとしても、繰り返し実行しても、名前の定義の行ではエラーになりません。同じシート名の新しいシートを作ろうとした行ではエラーになりますけど...。それも、事前に既存のシート名をチェックして、新しいシートではそれ以外のシート名を付けるようにすればOKです。)2010でとりあえず動きましたが、いつか2000でもテストしてみます。(2000の場合は、最後の5行はエラーになるかもしれないので、コメントアウトしておいてから試してみます。)→2018/06/18:テストしてみた結果、ダメでした。2010用のコードのあとに、2000用のコードを追加しておきます。'済むようにする処置。'ソースとなる表に「pvtsrc01」という名前を付けます。'(ピボットのソース範囲の指定には、この「pvtsrc01」という名前を使います。'ピボットキャッシュの作成(名前の定義をした「pvtsrc01」をソースにして。(実際に使いたいときはこの部分をコメントアウトして試してみてください。行ラベルの設定(1つだけの場合。2段、3段、なら、多分だけど、Array("1段目の列名","2段目の列名","3段目の列名")でやる。Columnも同じだと思う。String'現在のシート(アクティブなシート)の行と列が増えてもピボットソースの再設定をしなくても'済むようにする処置。'具体的には、「名前の定義」の機能にて、'範囲の設定に「=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1))」を使って、'ソースとなる表に「pvtsrc01」という名前を付けます。'(ピボットのソース範囲の指定には、この「pvtsrc01」という名前を使います。""'ピボットキャッシュの作成(名前の定義をした「pvtsrc01」をソースにして。(実際に使いたいときはこの部分をコメントアウトして試してみてください。行ラベルの設定(1つだけの場合。2段、3段、なら、多分だけど、Array("1段目の列名","2段目の列名","3段目の列名")でやる。Columnも同じだと思う。Excel2000用のピボット自動作成(ソース表の行列増減可変)のコード(→逆にこちらは2010でも動きます。'済むようにする処置。'ソースとなる表に「pvtsrc01」という名前を付けます。'(ピボットのソース範囲の指定には、この「pvtsrc01」という名前を使います。ピボットテーブルで行や列を設定して集計をする例。(実際に使いたいときは以降の部分をコメントアウトして試してみてください。'作ったピボットテーブルをオブジェクト変数に代入。'「顧客ID」列を、1段目の行ラベルに設定。'「氏名」列を、2段目の行ラベルに設定。'「住所01」列を、1段目の列ラベルに設定。'「単価」列を、1段目の集計フィールドに設定。'「数量」列を、2段目の集計フィールドに設定。String'現在のシート(アクティブなシート)の行と列が増えてもピボットソースの再設定をしなくても'済むようにする処置。'具体的には、「名前の定義」の機能にて、'範囲の設定に「=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1))」を使って、'ソースとなる表に「pvtsrc01」という名前を付けます。'(ピボットのソース範囲の指定には、この「pvtsrc01」という名前を使います。ピボットテーブルで行や列を設定して集計をする例。(実際に使いたいときは以降の部分をコメントアウトして試してみてください。'作ったピボットテーブルをオブジェクト変数に代入。'「顧客ID」列を、1段目の行ラベルに設定。'「氏名」列を、2段目の行ラベルに設定。'「住所01」列を、1段目の列ラベルに設定。'「単価」列を、1段目の集計フィールドに設定。'「数量」列を、2段目の集計フィールドに設定。Sub''※メニュー関連の記事Excel2010のリボンに、Excel2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する。(一応ツールバー単位で)ExcelVBA:WordVBA:他のVBA:ビジネス基礎:VBAプログラム(マクロ)をクイックツールバーにボタンとして組み込む方法Word2010のリボンに、Word2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する。(一応ツールバー単位で)Excel2010のリボンに、Excel2000と同じプログラムコードのコピペでユーザー設定ボタンを生成する~02。(一応ツールバー単位で。ピボットテーブル一発作成ボタン等も追加。ドロップダウンでの階層化ボタンも追加。「安全」な、Youtube動画のダウンロード方法6つ。挫折するオブジェクト式やプログラム(プロシージャ)の書き方、挫折しない書き方、の違い。「安全」な、Youtube動画のダウンロード方法6つ。挫折するオブジェクト式やプログラム(プロシージャ)の書き方、挫折しない書き方、の違い。送信メールが受信トレイに入ってしまうトラブルの回避、など。ODBCでQueryTableオブジェクトを自動作成するサンプルコード)。2000以降の全バージョンで使えると思います。~ついでに、セルの値で結果表示を自動で切り替える「パラメータクエリ」のVBAでの自動作成も。technology.。