- 締切済み
エクセルで頻度の集計をする方法について
A列に日付(1日からその月の末日まで)、B列にその日に訪れた会員氏名が入っています。 ある1日に訪れる人は当然複数人います。(つまりある1日の行は複数ある事になります) これを前出のシートとは別のシートで個人ごとにいつ来たかを集計したいのです。 A列に会員氏名、B列以降に来た日付を表示したい。 (例) 田中太郎 7/3 7/9 7/10 7/12 山田太郎 7/1 7/10 7/15 のようなイメージです。 どなたか良い方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。 >別シートに表示する方法を教えてください。 (1)セルにsheet1かsheet2かの区別を入れる。 (2)sheet2での表示列が、もとの回答のF列をsheet2のB列にずらす。それに伴う+7が+2に変更。 OKWEBによる強制改行にご注意して、修正してください。 Sub test02() Dim sh1, sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") '-------- d = sh1.Range("a1").CurrentRegion.Rows.Count e = 1 For i = 1 To d For j = 1 To e If sh1.Cells(i, "B") = sh2.Cells(j, "A") Then sh2.Cells(j, "B") = sh2.Cells(j, "B") + 1 sh2.Cells(j, sh2.Cells(j, "B") + 2) = sh1.Cells(i, "A") GoTo p01 End If Next j sh2.Cells(e, "A") = sh1.Cells(i, "B") sh2.Cells(e, "B") = 1 sh2.Cells(e, sh2.Cells(e, "B") + 2) = sh1.Cells(i, "A") e = e + 1 p01: Next i End Sub
- Taketoshi
- ベストアンサー率41% (23/56)
ピボットテーブルを使ってみるのはどうでしょうか。 私のは、Excel2002なので、バージョンが違うと多少文言が変わると思います。 No.2の方のサンプルデータを使ってみます。 1. 表の項目を入力するため、A1に、「日付」、B1に「名前」と入れる 2. ピボットテーブルを表示したい位置にセルを移動 (この例では、D1を選択している) 2. [データ(D)]-[ピボットテーブルとピボットグラフレポート]選択 3. [次へ]選択 ( ●Excelのリスト/データベース) ( ●ピボットテーブル) 4. データの範囲を、すべて($A$1:$B$9)にし、[次へ]選択 5. [レイアウト]選択 6. 右側にある[名前]をドラッグして、行(R)までもってくる 7. [日付]をドラッグして、行(R)までもってくる 8. [日付]をドラッグして、データ(D)までもってくる 9. [OK]選択 10. [完了]選択 名前ごとに日付のカウントをしてくれる表ができ、そう合計も出るはずです。 ピボットテーブルに関しては、もっといろいろな使い方ができるので、一度ヘルプを見てみてください。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAで良ければ (サンプルデータ) A1:B8に 7月3日 山田 8月3日 上田 10月2日 山田 1月1日 太田 11月3日 上田 12月1日 山田 3月2日 塩田 2月8日 上田 (コード) Sub test02() d = Range("a1").CurrentRegion.Rows.Count e = 1 For i = 1 To d For j = 1 To e If Cells(i, "b") = Cells(j, "f") Then Cells(j, "g") = Cells(j, "g") + 1 Cells(j, Cells(j, "g") + 7) = Cells(i, "a") GoTo p01 End If Next j Cells(e, "f") = Cells(i, "b") Cells(e, "g") = 1 Cells(e, Cells(e, "g") + 7) = Cells(i, "a") e = e + 1 p01: Next i End Sub (結果) F1:J4に 山田 3 7月3日 10月2日 12月1日 上田 3 8月3日 11月3日 2月8日 太田 1 1月1日 塩田 1 3月2日 質問と違って別シートに答えが出ていませんが変えるのは 容易です。 またA列の日も月中の日付けにしてませんが、変え無くても月中の場合も動きます。 H1:J4の書式は日付にしてください。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 Sheet1のA2~B9にデータがあるとします。 (1行目は項目名) Sheet2のA2に名前(「田中太郎」など)を入力するとすると、B2を選択して、数式バーに、 =IF(COUNTIF(Sheet1!$B$2:$B$9,$A2)<COLUMN(A2),"",INDEX(Sheet1!$A$2:$A$9,SMALL(IF(Sheet1!$B$2:$B$9=$A2,ROW(Sheet1!$B$2:$B$9),65537),COLUMN(A2))-1)) と入力して、まだ数式バーにカーソルがある状態で、[Ctrl]と[Shift]を押しながら[Enter]を押して決定します。 (数式の両端に「{}」が付いて配列数式になります。) そうしたら、これを右の列へ適当な列数コピーします。 (31日分あれば十分だと思います。) そして、コピーした全列ごとさらに下の行へコピーします。 (会員数分で十分だと思います。) これで表示されると思います。 なお、Sheet1のデータは9行までなので、適宜変更して下さい。 (ただし、開始行が2行目でない場合は、少し数式を変更しなければいけません。) また、同一会員が同じ日に訪れた場合は、重複して表示されます。
補足
回答、ありがとうございます。 別シートに表示する方法を教えてください。