Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
集計方法を知りたい
投稿日時: 20/03/05 17:00:03
投稿者: MAKISHI

下記のデータのような物があった時
ごはんを食べてから風呂に入った人は何人?
風呂に入ってからごはんを食べた人は何人?
を調べたいのですが方法がわからず苦戦しています。
どのように集計すればいいかお知恵を貸してください。
よろしくお願いします。
 
12:55:00    Fさん    ごはん
09:25:00    Cさん    風呂
09:44:00    Cさん    ごはん
10:03:00    Aさん    掃除
10:17:00    Aさん    風呂
10:17:00    Fさん    風呂
10:34:00    Aさん    ごはん
10:58:00    Fさん    掃除
11:20:00    Bさん    ごはん
11:26:00    Bさん    風呂
11:32:00    Bさん    掃除
12:49:00    Dさん    ごはん
12:50:00    Dさん    風呂
12:51:00    Dさん    ごはん
13:38:00    Eさん    掃除
13:40:00    Eさん    風呂
13:45:00    Eさん    ごはん
 

回答
投稿日時: 20/03/05 18:19:47
投稿者: んなっと

必ずA列は昇順に並べ替えてください。
 
      A   B    C    D    E F
 1  8:55:00 Fさん ごはん ごはん  風呂 4
 2  9:25:00 Cさん  風呂  風呂 ごはん 2
 3  9:44:00 Cさん ごはん          
 4 10:03:00 Aさん  掃除          
 5 10:17:00 Aさん  風呂          
 6 10:17:00 Fさん  風呂          
 7 10:34:00 Aさん ごはん          
 8 10:58:00 Fさん  掃除          
 9 11:20:00 Bさん ごはん          
10 11:26:00 Bさん  風呂          
11 11:32:00 Bさん  掃除          
12 12:49:00 Dさん ごはん          
13 12:50:00 Dさん  風呂          
14 12:51:00 Dさん ごはん          
15 13:38:00 Eさん  掃除          
16 13:40:00 Eさん ごはん          
17 13:45:00 Eさん  風呂          
 
F1
=COUNT(INDEX(1/(MATCH(B$1:B$100,B:B,0)=ROW(B$1:B$100))/(MATCH(B$1:B$100&"|"&D1,B$1:B$100&"|"&C$1:C$100,0)<MATCH(B$1:B$100&"|"&E1,B$1:B$100&"|"&C$1:C$100,0)),))
下方向・↓

回答
投稿日時: 20/03/05 18:38:18
投稿者: んなっと

作業列を複数使うなら
 
      A   B    C   D     E     F   G   H
 1  8:55:00 Fさん ごはん      ごはん   風呂 ご<風 ご>風
 2  9:25:00 Cさん  風呂 Aさん 10:34:00 10:17:00   0   1
 3  9:44:00 Cさん ごはん Bさん 11:20:00 11:26:00   1   0
 4 10:03:00 Aさん  掃除 Cさん  9:44:00  9:25:00   0   1
 5 10:17:00 Aさん  風呂 Dさん 12:49:00 12:50:00   1   0
 6 10:17:00 Fさん  風呂 Eさん 13:40:00 13:45:00   1   0
 7 10:34:00 Aさん ごはん Fさん  8:55:00 10:17:00   1   0
 8 10:58:00 Fさん  掃除                     
 9 11:20:00 Bさん ごはん                     
10 11:26:00 Bさん  風呂                     
11 11:32:00 Bさん  掃除                     
12 12:49:00 Dさん ごはん                     
13 12:50:00 Dさん  風呂                     
14 12:51:00 Dさん ごはん                     
15 13:38:00 Eさん  掃除                     
16 13:40:00 Eさん ごはん                     
17 13:45:00 Eさん  風呂                     
 
E2
=IFERROR(INDEX($A:$A,MATCH($D2&"|"&E$1,INDEX($B$1:$B$100&"|"&$C$1:$C$100,),0)),"")
右方向・→下方向・↓
G2
=IFERROR(1*(E2-F2<0),"")
下方向・↓
H2
=IFERROR(1*(F2-E2<0),"")
下方向・↓
 
としてG列、H列の和とすれば簡単

回答
投稿日時: 20/03/05 19:38:22
投稿者: んなっと

一番上に列見出し
 
      A   B    C
 1   時刻  名前  種類
 2  8:55:00 Fさん ごはん
 3  9:25:00 Cさん  風呂
 4  9:44:00 Cさん ごはん
 5 10:03:00 Aさん  掃除
 6 10:17:00 Aさん  風呂
 7 10:17:00 Fさん  風呂
 8 10:34:00 Aさん ごはん
 9 10:58:00 Fさん  掃除
10 11:20:00 Bさん ごはん
11 11:26:00 Bさん  風呂
12 11:32:00 Bさん  掃除
13 12:49:00 Dさん ごはん
14 12:50:00 Dさん  風呂
15 12:51:00 Dさん ごはん
16 13:38:00 Eさん  掃除
17 13:40:00 Eさん ごはん
18 13:45:00 Eさん  風呂
 
 データ
→テーブルまたは範囲から
→「先頭行をテーブルの見出しとして使用する」にチェックを入れてOK
→詳細エディター
 以下のように変更
 
let
    ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"時刻", type time}, {"名前", type text}, {"種類", type text}}),
    ピボットされた列 = Table.Pivot(変更された型, List.Distinct(変更された型[種類]), "種類", "時刻", List.Min),
    カスタム1 = Table.AddColumn(ピボットされた列, "ご<風", each if [ごはん]<[風呂] then 1 else 0 ),
    カスタム2 = Table.AddColumn(カスタム1, "ご>風", each if [ごはん]>[風呂] then 1 else 0 )
in
    カスタム2
 
→閉じて読み込む
 
1  名前  ごはん   風呂   掃除 ご<風 ご>風
2 Aさん 10:34:00 10:17:00 10:03:00   0   1
3 Bさん 11:20:00 11:26:00 11:32:00   1   0
4 Cさん  9:44:00  9:25:00        0   1
5 Dさん 12:49:00 12:50:00        1   0
6 Eさん 13:40:00 13:45:00 13:38:00   1   0
7 Fさん  8:55:00 10:17:00 10:58:00   1   0

投稿日時: 20/03/06 08:46:05
投稿者: MAKISHI

 んなっとさま
 
回答ありがとうございます。
 
3通りも方法を出して頂き非常に助かりました。
 
ありがとうございました。