• ベストアンサー

Excelのピボットテーブルについて

Excelで添付画像のようなピボットテーブルを作成することはできるのでしょうか。 列範囲に曜日と時限、行範囲に使用教室、値に教科名を表示させたいのですが、 値に表示されるのが「データの個数」や「合計」等の数値のみとなってしまいます。 解決法がございましたら、ご教示くださいますようお願いいたします。

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

  • ベストアンサー
回答No.8

【補足】対策2とは?  それは、[教室名]と[時限]を条件に[教科]を検索して表示することです。添付図では、まず、ピボットで表を生成しています。その後に、教室名と時限とを完全に消去しています。で、その後、参照式を書いて科目名を表示しています。これが、私の推奨方式です。 =Dlookup("SELECT 教科 FROM [Sheet3$A1:D1000] WHERE 教室='" & A2&"' AND 時限=" & B1)  これは、エクセルの関数に容易に置き換えられます。で、一つ作ればツツーッでいかると思います。 【注意事項】全てのセルの書式を初期値に戻すこと。

luvmint
質問者

お礼

ご回答いただきありがとうございます。 ベストアンサーをどなたにするか悩みましたが、 何度もご丁寧にご教示いただいたf_a_007様をベストアンサーにさせていただきました。 ややこしい箇所もありますがチャレンジしてみたいと思います。

その他の回答 (10)

回答No.11

どうしても、マクロ一発でやりたい時は、SQLWriterの使い方を案内します。

回答No.10

【何度もスマン】多分、これが一番簡単! シコシコ作業だが、一番確実かも!

回答No.9

【念のために】曜日+時限の場合を!

回答No.7

【お詫び】ピボットでは無理が真相みたいですね。  今、ピボットテーブルに初挑戦。やっていること、集計クエリ―ウィザードでした。が、マイクロソフトは、丁寧にも型変換をしているようですね。それが、[科目]が表示されない原因です。 対策1、SQLWriter()を利用する。 対策2、Excelの機能を使って《科目》を表示する。  対策1は、添付図のように可能。対策2も、割と簡単に実現できると思います。私のお勧めは、対策2です。対策1は、たった1行のマクロで実行可能。でも、対策2がお勧めです。なぜなら、対策2は、質問者でも簡単に実現できるからです。

回答No.6

もちろん、Max()でもFirst()でも一緒だと思います。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#3です。VBAの初歩的なロジックしか、使えてませんが、参考に。 コード行数でどの程度でできるか興味があったのでやってみた。 ーー 例データ Sheet1(シート名はこれに合わせてください) A1:D42 教室 曜日 時限 科目 A 月 1 図 A 火 1 A 水 1 数 A 木 1 国 A 金 1 理 B 月 1 理 B 火 1 理 B 水 1 図 B 木 1 理 B 金 1 数 C 月 1 英 C 火 1 国 C 水 1 図 C 木 1 C 金 1 音 D 月 1 社 D 火 1 音 D 水 1 D 木 1 社 D 金 1 国 A 月 2 数 A 火 2 社 A 水 2 国 A 木 2 A 金 2 図 B 月 2 国 B 火 2 図 B 水 2 英 B 木 2 数 B 金 2 社 C 月 2 数 C 火 2 理 C 水 2 理 C 木 2 図 C 金 2 技 D 月 2 理 D 火 2 技 D 水 2 国 D 木 2 技 D 金 2 技 手を抜いて、第2時限までしか作ってません。 質問者の第2、第3時限の例を取り出し、真似たつもり。 ーー 結果表 Sheet7(シート名は合わせてください) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ←列番号                            <-1行目 2 月 火 水 木 金 3 1 2 1 2 1 2 1 2 1 2 4 A 図 数 社 数 国 国 理 図 5 B 理 国 理 図 図 英 理 数 数 社 6 C 英 数 国 理 図 理 図 音 技 7 D 社 理 音 技 国 社 技 国 技 8                                 行番号↑ 4、7,10、13列は空白 見出しの部分は、あらかじめ手作業で作成しておく(A列と第1、3、4行目の文字) (VBAでもできるが、本筋とずれて、複雑になるので略) 標準モジュールに Sub test02() Set sh1 = Worksheets("Sheet1") Set sh7 = Worksheets("Sheet7") '--最終行 Lr = sh1.Range("A100000").End(xlUp).Row '--行データを対象に繰り返し For i = 2 To Lr x = sh1.Cells(i, "A") '教室 y = sh1.Cells(i, "B") '曜日 Z = sh1.Cells(i, "C") '時限 '-- r = sh7.Range("A:A").Find(x).Row c1 = sh7.Range("A3:X3").Find(y).Column c2 = sh7.Range("A4:X4").Find(Z).Column 'MsgBox x & " " & y & " " & Z & "=" & r & " " & (c1 + C2 - 2) sh7.Cells(r, c1 + c2 - 2) = sh1.Cells(i, "D") Next i End Sub 上記を実行する。 データ行数は、時限などのデータが増えても影響ない。 同じ項目のデータがダブってあったら、最後の出現分が残る。 見出しの、教室、曜日、時限、のSheet7での出現セルの場所は、列内・行内で動かしてもOKのつもり。Findで文字を探しているから。 「時限」の数字は半角でやったが、全角でも、プログラムを少々変えれば(全角変換)動く予想。

luvmint
質問者

お礼

ご回答いただきありがとうございます。 また後程試してみたいと思います。

回答No.4

【補足の補足】ピボットテーブルの考え方だけですが・・・  私は、ピボットテーブルの作成メニューがどこにあるのかも知らないど素人。それなのに、考え方を講釈するのはおこがましいのですが・・・。そこは、恥もなにも捨て去った70の爺。怖い物しらずで、以下駄文を書き連ねます。  私は、ピボットテーブル機能ってのは《クロス集計クエリ―生成ツール》の一種に過ぎないと推察します。質問の場合は、次のようです。 TRANSFORM Count(教科) AS 教科のカウント   SELECT 教室, Count(教科) AS [合計 教科]     FROM [時間割$A1:Z100]     GROUP BY 教室 PIVOT 時限;    これが、[教室]が縦軸で横軸が[時限]の表構造を生成し《GROUP BY 教室》毎の集計を表示させるSQL文です。ですが、このSQL文が表示するのは《Count(教科)》です。質問者は、ここでストップしている状態だと推察します。 >アレレ、こりゃー困った! ということで、先のSQL文を修正。 修正1、《Count(教科) AS [合計 教科]》・・・消す 修正2、《Count(教科) AS 教科のカウント》を     《Max(教科) AS 教科の最大》に置き換える。 TRANSFORM Max(教科) AS 教科の最大   SELECT 教室   FROM [Sheet3$A1:Z100]   GROUP BY 教室 PIVOT 時限; ※※※※※※※※※※※※※※※※※※※※※  '国'という文字列の最大値は'国'である。 ※※※※※※※※※※※※※※※※※※※※※  で、無事に私のテストは成功したってことです。まあ、考え方だけですが、何某かの解決のヒントになれば幸いです。なお、添付図は、上のSQL文の実行結果を示すものです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

小生の勉強不足で、恥をかく結果になる、かもしれませんが、 ピボットテーブルの「値フィールドの設定」のΣ値のところに、集合関数のなどの「計数」(SUM,COUNTなど、結果は1つの数値)を設定するのが、ピボットは主目的で、たとえ、そのグループでは、1つしかなくても、文字のような値を「足したりの加工せずに」そのまま持ってくるのは、できないのではないですか。 ーー 私もエクセルには、「表の組み換え」的な機能のサポートが不十分で、VBAなどに頼らざるを得ないようだ。これができれば、適した場合には、便利になるのに、と思ったことは、あります。 == 既出の回答で、これが出来そうな、様子をおっしゃっていますので、私も勉強させてもらいます。

回答No.2

【補足】何気なくやってみたら・・・  添付図のような[Sheet4]が出来上がりました。質問者も、同じことをやっているんですよ。これは、ピボットテーブル初心者なら、誰でも経験することと推察します。ですから、([Sheet3]を提示されたら)容易に解決する案件です。

回答No.1

Q、解決法がございましたら・・・ A、それは不明だが・・・  ちょいと、質問者がやっていることを再現してみました。 質問者:値ではなくて「データの個数」や「合計」等が表示される。   私:あらら、本当だ。    :[XX の合計]も、邪魔だな・・・。    :おい、教科のカウントじゃーねーよ。    :教科名を表示しろよ。 と、スッタモンダ。まあ[時限]は、テストを簡略化するために数字にしています。普通は、リストボックスでしょうから同じこと。上が[Sheet3]で、下が[Sheet4]です。私の場合は、ピボットテーブルを作成する手順を省いていきなり[Sheet4]を作成してみました。(って、いうか、それしかできない!)  まあ、過去に一度も、エクセルを操作したことも門外漢。私が、行った、小さなテスト。そういうテスト題を出されて質問されたらどうでしょうか?で、このテストで成功することが解決への第一歩だと思いますよ。今の状態では、逆算にて[Sheet3]を考え、そこから[Sheet4]での同じ現象の再現と修正の仕方を検証することになります。それまで、回答者に要求するのはどうかな?  そういうことで、私が示した[Sheet3]に相当する表を示しての再質問されることをお勧めします。

関連するQ&A

  • Excelピボットテーブルについて

    ピボットテーブルを使ってデータ集計をしています。 とある文字列Aの個数と文字列Bの個数を値として表に出しているのですが、 文字列Aの個数/文字列Bの個数を表示させる新たな列を作ることは可能でしょうか? 集計フィールドの挿入で「文字列A/文字列B」と入れてみたのですが、#DIV/0!になってしまいました。 もう少し具体的にやりたいことを書くと、 品物列に「きゅうり、りんご、トマト」の文字列 〇×列に「〇、×」の文字列 が、データベースに入っていて ピボットテーブルのほうできゅうりと入力されてる個数、〇と入力されてる個数が値としてあります。 きゅうりが3、〇が1だとして、1/3をパーセント表示した列を作りたいです。 (きゅうりの合計数のうち〇が何パーセントあるか) 分かりにくくてすみません。。 可能であればその方法も教えていただきたいです。

  • ピボットテーブルの操作

    Excel2010でピボットテーブルを勉強しています いま 添付図のようなデータで 男女別に”1”の個数 ”2”の個数 ”3”の個数・・・・・・・というようにデータの個数をカウントしたいのですが 何か良い方法はないものでしょうか ちなみに私はA・B・C各列別々にデータの個数をカウントし あとでSUM関数で合計するという原始的な方法でしのいでいます(各列のデータ数は特に必要ありません) COUNTIF関数なら苦労しませんが あくまでピボットテーブルで処理をしたいのです どうぞよいお知恵をよろしくお願いします

  • 合計金額に対する割合を出したい ピボットテーブル

    エクセル2007 ピボットテーブル 合計金額に対する割合を出したい A列 商品名 りんご りんご みかん バナナ B列 金額 100 120 150 300 このデータをソースにしてピボットテーブルを作成し、 「行ラベル」に商品名、 「値」に金額をドラッグしました。 その時、総計行に合計金額 670が表示されますが 合計金額に対する割合の列をピボットテーブルで作成することは可能ですか? 例えばF列に 合計の670を100%として F2セルに=E2/$E$5といれてF5までオートフィルをして、 F列の書式をパーセンテージに変えればできますが これと同じことをピボットテーブルで列を作り、行いたいです。

  • エクセル:ピボットテーブルの総計

    ピボットテーブルの総計は通常合計になります。これを差にすることは出来ますでしょうか。 列ラベルの差を総計に表示することは出来ますか。 イメージを添付します。

  • エクセル ピボットテーブルで個数

    こんにちは いつもお世話になっています。 初心者質問で恐縮です エクセル2010 添付した画像の状態から各列のタイトルごとに各データの個数をピボットテーブルで出す方法を教えてください。 例えば、「東京」列には「1」が3つ、「2」が2つ などがわかる形で表示させたいです。 よろしくお願いします

  • ピボットテーブル集計方法

    元のデータがB6からP6の15項目を表示させたい 約150行です。 この15項目をピボットテーブルのどこにドラッグすれば良いのでしょうか レポートフィルタとか列ラベルとか行ラベルとかいろいろありわかりません。 集計は個数ではなく明細を表示させたい。 具体的に添付出来ません。アドバイスお願いします。

  • ピボットテーブル 値の合計を出したい

    組織   A社   B社 第一担当 200 第二担当 200 第一担当 200 第二担当 400 400 と言う元データを元にピボットテーブルを作成しました。 行ラベル→組織 値→A社、B社 をドラッグしました。 この時、 データの個数 / A社 データの個数 / B社 の合計を一番右の列に作りたいのですが ピボットテーブルで作成するにはどうすればいいでしょう? 今は、H列にSUM関数を入れています。

  • Excelのピボットテーブル データ範囲について

    Excelのピボットテーブルについて質問です。 ピボットテーブルのデータ範囲内に、 非表示になっている行があります。 その状態でピボットテーブルを作成すると 非表示行もデータも含まれて集計されてしまいます。 非表示行は含めずにピボットテーブルを作成する方法は ないのでしょうか? 非表示行の特定が難しいため(複数あり)データ範囲から 外すのは難しいかと思います。。 Excelは2007です。 よろしくお願いいたします。

  • エクセル2003と2010のピボットテーブル違い

    エクセルの2003と2010のピボットテーブルの仕様の違いで悩んでいます。 画像のスクリーンショットのエクセル2003のように 合計個数と金額が行の縦に並べるには 2010で表示するにはどうしたらできるのでしょうか? 以前から使っているデーター資料の形式が2003に沿ったもので 変更が難しいのです。 宜しくお願いいたします。

  • エクセルのピボットテーブルで

    ピボットテーブルの表示方法についてです。 表の品名と数量からピボットテーブルを作成します。 行に品名、データ部に数量を表示させるのですが、数量が0(ゼロ)の場合には、その行自体を表示させない様にしたいのです。 元の表の方は変更等出来ないので、ピボットテーブルの方で何とか出来ないかと思います。 【元の表】 品番  数量 A001  5,000 A002    0 B001  4,500 B002    0 上記の2列からピボットテーブルを作成すます。 【ピボットテーブル】 品番  数量 A001  5,000 B001  4,500 総計  9,500 上記の様に、元の表で数量が0なら、その品番と数量の行が表示されない様にです。

専門家に質問してみよう