Excelを使って分布表を作る方法

このQ&Aのポイント
  • Excelを使って一覧データを分布表に可視化する方法について解説します。
  • ピボットテーブルを使用してデータを集計し、分布表を作成する方法をご紹介します。
  • Excelの機能を活用して、データの個数や値をもとに分布表を作成するテクニックをご紹介します。
回答を見る
  • ベストアンサー

Excelを使って分布表を作る

Excelを使って、一覧データをうまく可視化できないかと考えています。 例えば、 あ A 佐藤さん い A 鈴木さん い B 高橋さん あ A 近藤さん というデータの場合に(実際にはもっとデータは多いです)、    A      |  B   _____ |_____ あ|佐藤さん  |  |近藤さん  |  +------------ い|鈴木さん  | 高橋さん といった表を作りたいです。 ピボットが使えるかと思ったのですが、そうすると以下のようにデータの個数になってしまい、 データの値そのもので表示できません。    A  |  B   __ |___ あ|2  |  +------ い|1  | 1 Excel使ってうまく表示できないでしょうか。 ご存知の方いらっしゃれば、ご教授いただければ幸いです。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! VBAでの一例です。 ↓の画像で左側がSheet1(元データ)で右側のSheet2に表示するとします。 (Sheet1の表のレイアウトは画像のように1行目が項目行で、2行目以降にデータがあるとします) Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストし、Excel画面に戻ってマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, k As Long, wS1 As Worksheet Set wS1 = Worksheets("Sheet1") With Worksheets("Sheet2") .Cells.ClearContents For i = 2 To wS1.Cells(Rows.Count, "A").End(xlUp).Row If WorksheetFunction.CountIf(.Range("A:A"), wS1.Cells(i, "A")) = 0 Then .Cells(Rows.Count, "A").End(xlUp).Offset(1) = wS1.Cells(i, "A") End If If WorksheetFunction.CountIf(.Rows(1), wS1.Cells(i, "B")) = 0 Then .Cells(1, Columns.Count).End(xlToLeft).Offset(, 1) = wS1.Cells(i, "B") End If k = WorksheetFunction.Match(wS1.Cells(i, "A"), .Range("A:A"), False) j = WorksheetFunction.Match(wS1.Cells(i, "B"), .Rows(1), False) If .Cells(k, j) = "" Then .Cells(k, j) = wS1.Cells(i, "C") Else .Cells(k, j) = .Cells(k, j) & vbCrLf & wS1.Cells(i, "C") End If Next i .Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous End With End Sub 'この行まで ※ 関数でないのでSheet1のデータ変更があるたびにマクロを実行する必要があります。m(_ _)m

HelloAll
質問者

お礼

ご回答ありがとうございます。 やはりVBAでの実装になってしまいますよね・・・ あまり経験はないですが、トライしてみます。 ありがとうございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

手抜きせず丁寧に,まず下記のように通し番号を計算します。 A列B列C列  D列 あ A あ-A-1 佐藤 い A い-A-1 高橋 い B い-B-1 鈴木 A A あ-A-2 近藤 ご利用のエクセルのバージョンも不明のご相談ですが,エクセル2007以降を使い C2: =IF(COUNTA(A2:B2)=2,A2&"-"&B2&-COUNTIFS($A$2:A2,A2,$B$2:B2,B2),"") 以下コピー と並べておきます。 あのAの枠には =IF(ROW(A1)>COUNTIFS(A:A,"あ",B:B,"A"),"",VLOOKUP("あ"&"-"&"A"&"-"ROW(A1),C:D,2,FALSE)) と記入し,下向けにコピーしておきます。 もちろん式中の「"あ"」だの「"A"」だのの部分には,あなたが作成した一覧表の該当セルを当てはめて作成します。 >ピボット ピボットテーブルレポートでは、勿論そういう並べ替えはできません。 エクセルは基本「集計」をするソフトなので,ご相談のように「見た目良く並べ替える」機能は殆ど期待できません。

HelloAll
質問者

お礼

ご回答ありがとうございます。 バージョンの記載が漏れていてすいませんでした。 バージョンは2010です。 やはりピボットではできませんでしたか。 諦めます。 ありがとうございました。

関連するQ&A

  • エクセル 種類の個数をカウントする関数はありますか

    エクセル2002を使用しています。 重複データはひとつの種類として、範囲内のデータの種類数を計算したいのですが、どのようにすべきでしょうか? この範囲内には、ところどころ空白セルがあります。 例 B列 3行  10 4行  11 5行  12 6行 7行  15 8行 9行  15 10行  18 これで、B3からB10の範囲の種類別のデータの数は5です。 これを関数で計算したいのです。 本当は対象データが多いので、とりあえず、ピボットテーブルをかけて、抽出されたデータの一覧から使用した行数を数えて正解の数はわかりましたが、こんな方法はエクセルらしくないですよね。 また、データが数値でなかった場合も、関数で求められるでしょうか? 例 B列 3行  鈴木 4行  鈴木 5行  佐藤 6行 7行  高橋 8行 9行  高橋 10行  野口 この場合は、鈴木・佐藤・高橋・野口 で、データの種類の個数は4です。 これを関数で求めたいのです。 よろしくお願いします。

  • エクセル2003で表の集計をはり付けしたら

    Aシートの表の中のデータの個数を集計して可視セルジャンプしてコピーBシートの表に行列を変えて貼り付けたらREFエラーがでました。 値だけをコピーすれば数値はきちんと貼り付けられますが これだと表を変更したときに更新してくれません。 集計したときの値は値でコピーするのが一般的なのですか? ちなみにコピーした数式は=SUBTOTAL(3,E4:E21) です。

  • エクセルの表の集計について

    エクセルの『集計』や『ピボットテーブル』を使わずに、関数でやる方法があれば教えてください。 1 名前  住所  りんご  みかん 2 山田 東京   1    3 3 鈴木 神奈川  3   8 4 佐藤 埼玉   4    10 5 山田 東京   5    5 6 佐藤 埼玉   6    5 とエクセルに表があるとします。 (7行目以降はデータが追加されるとします。) 別シートに下記のように名前ごとにりんご・みかんの数の合計を表に反映するようにしたいのです。 1 名前 住所  りんご  みかん 2 山田 東京   6   8 3 鈴木 神奈川  3  8 4 佐藤 埼玉   10  15 説明不足のところがありましたら補足いたしますので、お願いいたします。

  • Excelで名寄せしてデータ個数を集計する方法

    このような表があります。 001 山田 001 山田 002 鈴木 003 田中 004 高橋 004 高橋 005 鈴木 005 鈴木 005 鈴木 006 高橋 007 鈴木 008 鈴木 この名前(「山田」等)を基準にして名寄せをし、かつデータ個数を集計しなくてはなりません。 普通に集計をすると、 001 山田 001 山田 山田 データ個数 2 002 鈴木 鈴木 データ個数 1 003 田中 田中 データ個数 1 004 高橋 004 高橋 高橋 データ個数 2 005 鈴木 005 鈴木 005 鈴木 鈴木 データ個数 3 006 高橋 高橋 データ個数 1 007 鈴木 008 鈴木 鈴木 データ個数 2 ・・・という具合になりますが、番号(001等)の枠を超えて名寄せしたいのです。 希望する集計結果としては、 001 山田 001 山田 山田 データ個数 2 002 鈴木 005 鈴木 005 鈴木 005 鈴木 007 鈴木 008 鈴木 鈴木 データ個数 6 003 田中 田中 データ個数 1 004 高橋 004 高橋 006 高橋 高橋 データ個数 3 ・・・という表示になるようにしたいのです。(番号も必要データなので消去せずに残したいです) 今までは、番号&名前レベルでまず集計し、あとは検索して同じ名前があればカット&ペーストという非常に面倒な作業をマニュアルでしてきました。 何かもっと楽にできる方法をご存知の方はぜひ教えてください。

  • エクセルの質問です。

    エクセルの質問です。 例)     A   B     1 鈴木  ○  2 佐藤  ×  3 鈴木  ×  4 佐藤  ○  5 鈴木  ○  6 佐藤  ○     A   B  7      鈴木 8  ○   ? 9  ×   ? 以上のような表があったとします。 この中から鈴木の○と×がぞれぞれ何個あるのかB8・B9セルに計算式を入れたいのですがわかりません。 どなたか教えてくださいよろしくお願いします。

  • t分布表の見方について

    t分布表やF分布表を使用するときに、データの個数が20個までなら表から目的の値をすぐ見つける事ができるのですが、個数がそれ以上になると値がトビトビになり、最後は∞になってしまうのですが、データの個数が表に載ってない個数(例えば32とか58とか)の場合、どうすればいいのでしょうか。

  • ExcelのVBAに明るい方・・・

    Excelの、Sheet1 に 1日目,鈴木くん,点数,・・・ 2日目,佐藤くん,点数,・・・ 2日目,山田くん,点数,・・・ 3日目,佐藤くん,点数,・・・ 3日目,鈴木くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ という、元ダネの一覧表があって、 このデータを日々追加入力していくごとに、自動的に、 Sheet2 には、鈴木くんのみの一覧表のデータ 1日目,鈴木くん,点数,・・・ 3日目,鈴木くん,点数,・・・ ・・・ Sheet3 には、佐藤くんのみの一覧表のデータ 2日目,佐藤くん,点数,・・・ 3日目,佐藤くん,点数,・・・ ・・・ Sheet4 には、山田くんのみの一覧表のデータ 2日目,山田くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ が、自動的に追加入力されるVBAの記述って、 どうすればいいんでしょうか? VBAに明るい方、どうかよろしくお願いします。

  • 【Excel】 可視セルへの貼り付けについて

    【Excel】 可視セルへの貼り付けについて Excel2003および2007を使用しています。 ピボットにて集計したデータを別データに貼り付けしたいのですが、 その別データをフィルタで絞って、可視セルのみに貼り付けしたいのですが、 うまくいきません。 非表示のセルにも貼り付けされてしまいます。 可視セルのみに貼り付けできる何かいい方法はありますでしょうか? ちなみに貼り付け方法は 値のみ を希望です。 (例) ◎ ピボットデータ・・・  A B A B A B ◎ 貼り付け先データ・・・ A B C A B C A B C ・・・ABのみフィルタで絞って、ピボットデータを貼り付けしたい。 Cは非表示なので貼り付けしたくない。 よろしくお願いします。

  • EXCELで勤務表作成

    勤務表の作成をエクセル2003で作成しています。     1 2 3 4 5 ・・ 鈴木  A A B B 休 佐藤  B B 休 休 A 太田  休 休 A A B 吉田  A B 休 B A 上記のように個人別にその日に何の担当業務をするかで作成されたものを   11月1日        11月2日    ・・・  A 鈴木 吉田      A 鈴木  B 佐藤         B 佐藤 吉田  休 太田         休 太田 と日付ごとに業務別に誰が担当するのか別の表で作成する方法があったら教えて下さい。「最初からその表で作成すれば?」とお思いになるかもしれませんが、大人数の休日の管理が難しいので最初の表の作成方法は変えたくありません。ちなみに表の通り一つの業務に複数名担当することもありえますので、できればそれをふまえた上で回答願います。

  • Excelでのリストアップ

    佐藤さん、鈴木さん、鈴木さん、高橋さん、田中さん、鈴木さんというデータから 「使われた苗字は佐藤さん、鈴木さん、高橋さん、田中さんの4種類です。」という動作をExcelでしたい時には何かよい方法はありますでしょうか。 のべ、といいますか、この動作をなんと言うか思いつかなかったため調べることが出来ずにいました。 アドバイスを頂けたらと思っております。 宜しくお願いいたします。

専門家に質問してみよう