- 締切済み
エクセルについて
申し訳ありません。助けてください。 仕事で管理用のエクセルファイルをつくるようにいわれ、さまざまな本をみてみたのですがよくわかりません。 目的:仕事柄、同じお客様が一定期間、複数回(5回~10回ほど)いらっしゃいます。お客様がいらっしゃる日時を日別に集計して、その日来店なさるお客様が、だれが、いつ来るのかを管理しようと思っております。 例えばA様、B様の来店時間の管理をします。15:00~16:00、16:00~17:00と時間枠を設けたときに、○月○日にA様は15:00からの会にいらっしゃいますが、B様は○月○日には店自体にいらっしゃらない。○月×日にA様は16:00からの会にいらっしゃって、B様は○月×日は15:00の会にはいらっしゃいます。 これを、一つのシートでお客様のお名前を縦列、時間を横列にしたときに、today関数にしたがって変化していくような(1日ごとに引用もとのデータにしたがって反映されるデータが変化していくという意味です)、○さまが○時の会にいらっしゃるということが一目瞭然なものにしたいのです。 誰がいついらっしゃるかのデータについてはもう一つのシートに全て網羅されています。 質問:そのようなときに、一枚のシートの式をどのようにすればよいか、誰がいついらっしゃるかのデータはどのような形式にすればよいか、ご教授をお願い致します。皆様のご指導によってデータ内容は柔軟に変更させていただこうと思っております。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
元の表が次のようになっているとします。 シート1でA1セルにお客名、C1セルに日付、D1セルには15:00~16:00、E1セルには16:00~18:00の文字列がそれぞれ入力されており、それぞれのデータが下方に入力されているとします。該当の時間帯には○などが入力されているとします。 そこでE列およびF列には作業列をもうけて対応することにします。 E2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(Sheet2!B$1="",IF(B2=TODAY(),A2,""),IF(Sheet2!B$1<>"",IF(B2=Sheet2!B$1,A2,""))) この式は答えとなる表をシート2に表示させるとしてシート2のB1セルには対象とする日付を入力すればその日の来店者のお客名やその時間帯が表示させるようにするもので、特にシート2のB1セルが空の場合にはその日の来店者と時間帯が表示される様にするためのものです。 F2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(E2="","",IF(COUNTIF(E$2:E2,E2)=1,INT(MAX(F$1:F1))+1+IF(C2<>"",0.1,IF(D2<>"",0.2,0)),INT(INDEX(F$1:F1,MATCH(E2,E:E,0)))+IF(C2<>"",0.1,IF(D2<>"",0.2,0)))) そこでお望みの表ですがシート2に作るとしてA1セルには検索日(本日の場合にはB1セルは空のまま)とでも文字列を入力します。B1セルには本日以外での日付における来店者とその時間帯を見るのでしたらその日付を入力します。 A2セルにはお客名、B2セルには15:00~16:00、C2セルには16:00~18:00の文字列をそれぞれ入力します。 A3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$F:$F,ROW(A1)+0.1),INDEX(Sheet1!$E:$E,MATCH(ROW(A1)+0.1,Sheet1!$F:$F,0)),IF(COUNTIF(Sheet1!$F:$F,ROW(A1)+0.2),INDEX(Sheet1!$E:$E,MATCH(ROW(A1)+0.2,Sheet1!$F:$F,0)),"")) これで検索日における来店者が表示されます。 B3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$F:$F,ROW(A1)+0.1),"○","") これでそれぞれの来店者が15:00~16:00時間帯に有れば○が表示されます。 C3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$F:$F,ROW(A1)+0.2),"○","") これでそれぞれの来店者が16:00~18:00時間帯に有れば○が表示されます。
- imogasi
- ベストアンサー率27% (4737/17069)
>いつ来るのかを管理しようと なぜそういうことが可能なのか、事情がわからないから考えにくい。 質問には、データ例と、出来上がってほしい結果例を書いて、説明を添えて質問するもんだ。 ーー 関数程度で済ましたいのだろうが、「表の組み換え」タイプの課題は関数では複雑になり、難しかったり、事実上出来ない。 VBAなどでやる必要がある場合が多くなる。 ーー とりあえず、私の思いつきで ピボットテーブルを使う方法ではどうかな? 例データ 氏名 日時 時刻 山田 8月20日 13:02 神田 8月20日 13:06 木村 8月20日 14:34 田中 8月20日 15:30 山田 8月20日 16:20 山田 8月21日 14:20 神田 8月21日 15:16 木村 8月21日 16:54 田中 8月21日 16:24 山田 8月21日 16:20 ーーー 結果 データの個数 / 氏名 日 日時 時刻 <1900/1/0 総計 0時 0時 合計 氏名 13時 14時 15時 16時 山田 1 1 2 4 4 神田 1 1 2 2 木村 1 1 2 2 田中 1 1 2 2 総計 2 2 2 4 10 10 「グループ化」で「時間」でグループ化している。 上記データ例は2日分だが、このシートにデータが20日分有って、最近の3日分を対象にするなら(日付別にデータがなっておれば)、対象範囲をその3日分指定して操作すれば良い。 ーー 興味が沸けば、ピボットテーブルは解説本もWEB記事も多いから、読んで勉強してください。
- hallo-2007
- ベストアンサー率41% (888/2115)
補足が必要ですね。 >誰がいついらっしゃるかのデータについてはもう一つのシートに全て網羅されています。 このシートのデータの構成について 結果、希望の抽出のシート表示について 例えば A1セルに 日付(Today()関数)を入れると 4行目以下に、指定した日付の一覧が抽出されて表示される とか? >一枚のシートの式をどのようにすればよいか >誰がいついらっしゃるかのデータはどのような形式にすればよいか 元データの形式の変更も念頭にあるのであれば 元データ お客様名 会名 日付 開始時刻 終了時刻 Aさん 〇の会 7/1 10:00 12:00 Bさん △の会 7/1 13:00 15:00 Aさん △の会 7/1 13:00 15:00 ・・・ とかデータを入れていく 抽出のシートに 日付 お客様名 7/1 Aさん お客様名 会名 日付 開始時刻 終了時刻 として指定した日付、あるいは お客様名の一覧が抽出されるように フィルターオプションの設定をして、ご希望であればマクロで自動で実行される様な仕組み を考えます。
- oosaki2
- ベストアンサー率53% (8/15)
+------+------------+------+------+------+------+ |氏名 | 年月日 | 15~16 | 16~17 | 省略 | 小計 | +------+------------+------+------+------+------+ |Aさん | 2011/07/23 | 1 | 1 | | 2 | +------+------------+------+------+------+------+ |Bさん | 2011/07/22 | 1 | | | 1 | +------+------------+------+------+------+------+ 年月日の計算は面倒なので、年月日はユーザー定義で"0000/00/00"として数字 例)"20110723"と入力させて、"2011/07/23"と表示する。 これで、7月26日に3日前に来た人をフィルターで 年月日 >= 20110723 かつ 小計 >= 1 で抽出する。 実際に来た場合に年月日と来た時間帯のデータをクリアし、新たに1を入れなおす。 なお、入力用シートとVBAを使用すると年月日の自動更新や見栄えするシートになると 思います。 そこまでのスキルが無い場合は残念ながら、年月日や来た回数などは手動で 更新、クリアして下さい。
- aokii
- ベストアンサー率23% (5210/22062)
日、時、氏名でデータを羅列し、フィルターと並べ替えを使ってはいかがでしょう。
補足
申し訳ございません、言葉が足りませんでした。 1日に同じお客様が複数回来店なさることもしばしばあるので、○月○日の15:00の会、16:00の会両方にご来店なさる方もいらっしゃいます。そういうときに、フィルタではうまくいかなかったので、なにか他に方法はございませんでしょうか?