出産前後の痔にはご注意!

ピボットテーブルの集計セルをダブルクリックすると、ドリルダウンされ、詳細データが、sheet#に出力されます。何度も行うとシートが増えてしまいますが、同じシートに結果を上書きして出力することはできませんか?

他サイトで解決法として以下の対策が挙げられていましたが、うまく作動しませんでしたので
他のやり方があればと思い質問させて頂きます。

<他サイト解決法>
1.ピボットテーブルを作成後、画面下部のシート名を右クリックし、コードの表示を選択
2.Microsoft Visual Basicの画面が表示されるので↓のコードをそのまま貼り付け

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.DisplayAlerts = False
Sheets(Sheets.Count - 1).Delete
Selection.ShowDetail = True
Application.DisplayAlerts = True
End Sub

3. Microsoft Visual Basicの画面を閉じる
4.ピボットテーブルのシートを表示し、集計セルをダブルクリック
5.別シートに結果が表示される(このときシートの数は、ピボットテーブルのシートと合わせて2つ以上ある必要があります)
6.もう一度、集計セルをダブルクリックすると古い方の集計結果シートが削除され、新しいシートが新規で作成されます。(結果的にシートは増えていかない)

=======ここまで=================================================================
結局、シートが増え続けている結果となりました。
集計セルをダブルクリックして新規のシートに詳細データが表示される仕様みたいですが
なるべくマクロを組まない方法があれば尚良いです。

宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

マクロを組まないと無理です。


また、詳細データを表示するシートは常に1枚、という仕様で良いですか?
それとも集計項目が違えば別シートに詳細データを表示する仕様でしょうか?

『詳細データを表示するシートは常に1枚、という仕様』の場合、
該当シートのシートモジュールに以下のコードを置きます。

'SheetModule
Option Explicit
'-------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
                    Cancel As Boolean)
  If Me.PivotTables.Count = 0 Then Exit Sub
  Dim r As Range
  On Error Resume Next
  Set r = Intersect(Target, Target.PivotTable.DataBodyRange)
  On Error GoTo 0
  If Not r Is Nothing Then
    Application.OnTime Now, Me.CodeName & ".test1"
    Set r = Nothing
  End If
End Sub
'-------------------------------------------------
Private Sub test1()
  Const sName = "pvtDetail"
  On Error Resume Next
  Application.DisplayAlerts = False
  Sheets(sName).Delete
  Application.DisplayAlerts = True
  On Error GoTo 0
  ActiveSheet.Name = sName
End Sub
'-------------------------------------------------
詳細データ表示用のシート名を予め決めておきます。
上の例では"pvtDetail"。
上書きというよりも、既存"pvtDetail"を削除して新規作成、という感じです。
    • good
    • 0
この回答へのお礼

詳細データを表示するシートは常に1枚で行うことができました。
ありがとうございました。

お礼日時:2010/09/28 10:29

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルのピボットで、集計値降順で表示するには?

お世話になります。
エクセルのピボットテーブルで、担当者ごとの売上集計表を作成しています。ウィザードで、「行(R)」に担当者名、「データ(D)」に合計/売上をいれています。

名前の順ではなく、売上集計額の高い順に表示することはできますか?
今はピボットテーブルから値貼り付けして
普通の表にしてから並べ替えています。
よろしくお願い致します。

Aベストアンサー

担当者を売上集計額順ですか?
標題の担当者名のセル(ボタン状になっている)でダブルクリックして詳細をクリック
「自動並べ替えオプション」で降順を選択して、
「使用するフィールド」を「売上集計額」にしてください。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

QExcel > ピボットテーブル「(空白)」非表示

Excel 2003 で、ピボットテーブルを利用した際、元データにて未入力のセルは、ピボットテーブルでは「(空白)」と表示されてしまいます。

これを、任意の文字列や、空白のまま表示(「(空白)」を非表示)にする方法はありますか?

空白セルそのものを非表示する方法は、ピボットタイトル行の▼で「(空白)」をチェックオフすれば消えますが、これでは関係する行の他列も非表示になってしまいます。

ただ「(空白)」ではく、空白のまま表示したいだけなのですが、その方法が分かりません。

宜しくお願い致します。

Aベストアンサー

ピボットテーブルの行や列フィールドの「アイテム」(個々の「あ」や「い」,「A」「B」「1・2・3」,「(空白)」も同じ)は,作成したピボットテーブルの中で「(アイテムの)キャッシュ」として保持されています。
実際今回の「(空白)」だけでなく,たとえば列Bフィールドのアイテム「1」1セルを「1個」と書き換えてみると,レポート上のアイテム1が全部1個と表記されます。
レポートで行列アイテムを直接書き換えることで,キャッシュの中で「元データの1 = アイテム表記は1個」というデータを保持し,以後それを使って表示してくれるためです。


#余談ですが,たとえば「四半期」で日付をグループ化すると,エクセルでは1月から3月が第1四半期として集計されます。
これを日本の四月からの会計年度に合わせて「1-3月」は第4四半期に,そして「4-6月」を第1四半期として集計させたいような場合にも,この方法を利用することができます。

Qエクセルのピボットテーブルの書式設定が、データ更新のたびに元に戻る

エクセル初心者、ただいま格闘中です。お世話になっております。

ピボット・テーブルのフォントサイズやセルの色を設定し、データ更新しても設定したとおりになっているようにしたいと思います。

ソフトの「ヘルプ」によると、
ピボットの「オプション」→「書式の維持」をチェック
でいいと書いてあるのですが、ここをチェックしても、更新かブックを閉じるたびに元に戻ってしまいます。
(シートを閉じて開いただけでは戻りません。)

よろしくお願いいたします。

Aベストアンサー

#1です。
条件付書式というのは、セルに直接書式を設定するのではなくて、文字通り「曜日が日曜日だったら、その列をピンクに網掛けする。」みたいな書式設定のことで、ツールバーの「書式→条件付書式」で行うものです。
でも、これとは違い、ピボットテーブル内のセルに書式を直接設定したんですよね?
だったら維持されるはずなんですけどね。。。
マイクロソフトの技術情報をいくら検索しても、そのような現象の報告は見つけられませんでした。
なので僕にはもうお手上げです。解決できなくてすみません。
もしまだお困りでしたら(お困りですよね)、いったん締め切って、新たに質問したほうがいいかもしれません。
その際は、OSやExcelのバージョン、具体的な書式設定内容(合計行を網掛け、とか、特定の列のフォントを太字に、等)を明記すると、回答者が答えやすいと思います。
頑張ってくださいヽ(^。^)ノ

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qピボットテーブルを使用した場合の「#DIV/0!」のエラー表示を表示させないためには?

エクセルのピボットテーブルを使用した際に「#DIV/0!」のエラー表示を出さないようにするにはどうすればよいのでしょうか?「ISERROR」を使用すると思うのですが、ピボットテーブルを使用した場合なので… とても困っていますのでよろしくお願い致します。

Aベストアンサー

ピボットテーブルを右クリックして「オプション」を選択
「エラー値に表示する値」にチェックして代替表示する文字か数値を設定してください。

Qピボットテーブル 0個の行を非表示にしたい

こんばんは。エクセル2003のピボットテーブルについてお伺いします。

A1=品名    B1=個数
A2=みかん  B2=2
A3=みかん  B3=1
A4=りんご  B4=1
A5=バナナ  B5=0

上記のデータをソースとして
行のフィールドに品名を、
「データのアイテムをドラッグします」に個数をドラッグして
ピボットテーブルを作成した時に
個数が0の品名は表示させたくないのですが
どうすればいいのでしょうか?

0のセルにカーソルを当て右クリックで「表示しない」を選択lしても
「現在選択されている範囲を隠す事はできません」とメッセージが出てしまいますし
これはサンプルであり、実際のデータは数百個の0の行を非表示にしたいので
関数などを使って一気にできる方法を知りたいです。

アドバイスよろしくお願いします。

Aベストアンサー

#1です。
#3さんの方法は勉強になりました。

つい「ソート」と書きましたが、「データを並べ替える」ことです。
見出しを含むデータ範囲を選択して、メニューのデータ>並べ替えとクリックしてください。

見出し行も並べ替えに含む/含まないも指定できます。
並び順も指定できます(昇順;小→大、降順:大→小)

今回のケースなら「個数を降順に指定」です。

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。

QexcelのVLOOKUPで検索値を2つにできますか?

excelのVLOOKUPで検索値を2つにしたいです
私の知っているVLOOKだと下記のことは対応できます
例えば、A列に会社名、B列に住所、C列に電話番号 とあった場合
「住所が検索値と同一なら電話番号を表示しなさい」という指示は出せます

そこで質問です
「会社名と住所が検索値と同一なら電話番号を表示しなさい」
というような、複数の検索値を持つ事はできないのでしょうか?

参考になるURLなどでも結構ですので、ご存知の方よろしくお願いいたします

Aベストアンサー

元の表をA列に会社名、B列に住所、C列に「=A2&B2」、D列に電話番号のようにして
=VLOOKUP(会社名&住所,$D$2:$C$100,2,FALSE)
のようにすれば可能です。


人気Q&Aランキング