- ベストアンサー
エクセルでデータの抽出方法について
- エクセルでピッポットテーブルを作成し、その中のデータを効率的に抜き出す方法を教えてください。
- 私はエクセルの基本的な知識はあるものの、VBAについてはほとんど知識がありません。質問のデータは縦・横に100以上の条件があり、ピッポットの合計で表されている数字は約300個です。手作業でデータを抜き出すのに時間がかかっているため、より効率的な方法を知りたいです。
- データの抽出方法を具体的に教えてください。フォーミュラや関数を利用するほか、VBAを使う方法もあれば教えていただけると嬉しいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
添付画像のようなピボットテーブルがあるなら、以下のような関数を使って該当データを表示し、対象外のデータのみ後で削除するのが簡単です。 H1セル =OFFSET($B$5,(ROW(A1)-1)/COUNTA($B$4:$E$4),MOD(ROW(A1)-1,COUNTA($B$4:$E$4))) I1セル =INDEX($B$4:$E$4,MOD(ROW(A1)-1,COUNTA($B$4:$E$4))+1) J1セル =INDEX($A$5:$A$7,MOD(INT((ROW(A1)-1)/COUNTA($B$4:$E$4)),COUNTA($A$5:$A$7))+1) 次にH列を選択してCtrl+Fで「オプション」ボタンをクリックして検索対象を「値」にして、検索あ売る文字列に「0」として「すべて置換」し、Ctrl+Aのショートカット操作で0のセルをすべて選択し、右クリックから「削除」で「行全体」を指定すればご希望のデータが抽出されますので、適宜値保存などをしてください。 ちなみにデータ数をカウントするCOUNTA($B$4:$E$4)などの数式は、どこか別セルに重複のないデータ数を計算させて、このセルを参照するほうがどのようなデータにも対応ができるので便利かもしれません。
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 条件として、表内のデータは数値で重複がない!ということが前提です。 一例です。 ↓の画像で左側がSheet1で右側のSheet2に表示するようにしてみました。 Sheet2のA2セルに =IF(COUNT(Sheet1!$B$2:$GR$1000)<ROW(A1),"",SMALL(Sheet1!$B$2:$GR$1000,ROW(A1))) B2セルに =IF(A2="","",INDEX(Sheet1!$B$1:$GR$1,,SUMPRODUCT((Sheet1!$B$2:$GR$1000=A2)*COLUMN($A$1:$GQ$1)))) C2セルに =IF(A2="","",INDEX(Sheet1!$A$2:$A$1000,SUMPRODUCT((Sheet1!$B$2:$GR$1000=A2)*ROW($A$1:$A$999)))) とりあえず、行に関しては1000行目まで対応できる数式に 列に関しては200列目まで対応できるようにしています。 以上、参考になれば良いのですが 他に良い方法があれば読み流してくださいね。m(__)m
お礼
回答ありがとうございました。 質問にはもれていましたが数値の重複がある可能性は0ではないようです。
お礼
回答ありがとうございました。 範囲指定等を変更したところばっちりでした! 本当にありがとうございましたm(_ _)m