- ベストアンサー
エクセルよろしくです
1 8:30 8:50 2 8:50 9:10 3 9:10 9:30 4 9:30 9:50 : : : 13 A B C D E F Aさん 9:00 11:00 2 8:50 9:10 Bさん 10:00 12:00 3 9:10 9:30 Cさん 10:00 15:00 4 9:30 9:50 Dさん 9:00 12:00 1 8:30 8:50 Eさん 11:00 13:00 5 9:50 10:10 : : : : : : Aは名前 Bはその人が来た時間 Cは帰った時間 Dは早く来た人の順番 Eは指導開始時間 Fは指導終了時間です。 現在はVLOOKを使いE、Fを出しています。 しかし、問題が着てない時間に指導してるということになりますので、IF関数で8:30~8:50来てる人には1をだす。8:50~9:10は2というIF関数と思っています。しかしそれでは、8:50~9:10という人が3人も4人もってことになります。 このようにしたいと思っています。 Aさん 9:00 11:00 3 9:10 9:30 Bさん 10:00 12:00 5 9:50 10:10 Cさん 10:00 15:00 6 10:10 10:30 Dさん 9:00 12:00 4 9:30 9:50 Eさん 11:00 13:00 7 11:10 11:30 : : : : : : 同じ時間が2人以上にならない関数ありましたらよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Excel関係でレスが付かないのは珍しいですね。 質問が解かりづらいかも。 このようにしたいの中で、Bさんは来た時間より早く指導時間になっているけど、それで良いの? Bさん 10:00 12:00 5 9:50 10:10 A列の氏名はもとからリストになっていて、B列を見てD列を自動で入れたいって事? 関数ではきびしいかな、、
その他の回答 (4)
- jindon
- ベストアンサー率43% (50/116)
No.3 の jindon です。 「来た時間」に同時刻が複数あるときは、ご提示の結果になります。 9:00:00 9:00:01 9:00:02 ....... ....... という具合に、1秒で良いので差をつけてください。
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 他の方の回答で解決してるなら用無しですが、、、 まだ理解出来てないです。 A列はコードナンバーで手入力 B列は氏名で、A列を入力する事によってVLOOKUP関数で表示 C列は来た時間で、A列を入力する事によってVLOOKUP関数で表示 D列は帰った時間で、A列を入力する事によってVLOOKUP関数で表示 E列は早く来た人の順番で、C列を見てIF関数で表示 F列は指導開始時間で、E列を見てVLOOKUP関数で表示 G列は指導終了時間で、E列を見てVLOOKUP関数で表示 これだとA列以外は全部関数で表示される事になるのですが、来た時間や帰った時間がどうしてVLOOKUP関数で出せるのでしょう?あらかじめ来た時間と帰った時間の別テーブルがある? 「このようにしたい」で9:00に来ているDさんより、10:00に来ているEさんの方が指導開始時間が早くなるのも謎です。 どのような場合に使用するのか前後の状況が見えないので推測ですが、来た順番に指導時間を割り当てたいっていうのが目的でしょうか?何時に来ようと先に来た人が優先されるのでは無いのですか? あらかじめF列を指導時間順に作成しておき、 A□B□□□C□□□□D□□□E□□F□□□G □□□□□□□□□□□□□□□□□08:30□□08:50 □□□□□□□□□□□□□□□□□08:50□□09:10 □□□□□□□□□□□□□□□□□09:10□□09:30 □□□□□□□□□□□□□□□□□09:30□□09:50 □□□□□□□□□□□□□□□□□10:10□□10:30 ・ ・ 来た時間に合わせて、A列にコードナンバーを入れるのでは駄目なの? A□B□□□C□□□□D□□□E□□F□□□G □□□□□□□□□□□□□□□□□08:30□□08:50 1□Aさん□□□□□□□□□□□□08:50□□09:10 3□Cさん□□□□□□□□□□□□09:10□□09:30 □□□□□□□□□□□□□□□□□09:30□□09:50 2□Bさん□□□□□□□□□□□□10:10□□10:30 ・ ・ AさんとCさんは8:40前後に来たが、Aさんの方が早かったので8:50にAさんのコード番号を入力。 Cさんのコード番号をその次に入力。 9:30には誰も来ていなかったので、手待ち時間となった。 Bさんが来たのは9:40分なので、10:10からの所にBさんのコード番号を入力。
補足
来た時間、帰った時間は別シートにて入力してあります。そこからコードナンバーからのVLOOKUPしております。 「このようにしたい」で9:00に来ているDさんより、10:00に来ているEさんの方が指導開始時間が早くなるのは、時間の枠の中の自動計算が難しいと思っています。終了時間もありますし。 ある程度の順番が出たら、そこから、H、JにIF関数で正しい数値をだしていくようにと思っています。 来た順番というのは オートフィルターということでしたら、 できます。 A列は現段階は数字の小さい順に出てきます。 ご迷惑おかけしますがよろしくお願いします。
- jindon
- ベストアンサー率43% (50/116)
Lookup テーブルが K,L列の1行目から (左端の1,2,3,4,5...は要りません。) K L 1 8:30 8:50 2 8:50 9:10 3 9:10 9:30 名前がA2から入力されているとして。 D2に =IF(B2="","",RANK(B2,$B$2:$B$20,1)) E2に =IF(D2="","",IF(D2=1,--TEXT("8:30","h:mm"),IF(INDIRECT("E"&MATCH(D2-1,$D$1:$D$20,FALSE))=MAX($K$1:$K$20),MAX($K$1:$K$20),MIN(IF($K$1:$K$20>INDIRECT("E"&MATCH(D2-1,$D$1:$D$20,FALSE)),IF($K$1:$K$20>B2,$K$1:$K$20,""),""))))) として、配列数式なので Ctrl+Shift+Enter で確定。 F2に =IF(E2="","",VLOOKUP(E2,$K$1:$L$20,2,FALSE)) D2:F2を下方コピー + ペースト "来た時間"に同時刻が発生するとエラーになりますので、1分でも差をつけてください。 ご希望どうりになりますか・・・
補足
返信ありがとうございます。 A 9:00 11:00 1 8:30 8:30 B 9:00 11:00 1 8:30 8:30 C 9:00 11:00 1 8:30 8:30 D 9:00 11:00 1 8:30 8:30 E 9:00 11:00 1 8:30 8:30 F 9:00 11:00 1 8:30 8:30 G 9:00 11:00 1 8:30 8:30 H 9:00 11:00 1 8:30 8:30 I 9:00 11:00 1 8:30 8:30 J 9:00 11:00 1 8:30 8:30 K 10:00 11:00 12 #N/A #N/A L 9:00 11:00 1 8:30 8:30 となってしまいます。 A 9:00 11:00 1 B 9:00 11:00 2 C 9:00 11:00 3 D 9:00 12:00 11 E 9:00 11:00 4 F 9:00 11:00 5 G 9:00 11:00 6 H 9:00 11:00 7 I 9:00 11:00 8 J 9:00 11:00 9 K 10:00 11:00 12 L 9:00 11:00 10 同じ順番が入らないように・・ 時間内に入る方法はないでしょうか??入れない場合は0入力と思っていますのですが・・ よろしくお願いします。
- keikan
- ベストアンサー率42% (75/176)
だいぶ質問がすっきりしてきましたね^^;; まずはアルゴリズム的なところを、 A,B,Cが入力されている状態で(A’:Aの前に番号を1から順番に振った物を用意してください)、B及びA’をもとにソートをかけます。この状態でDに1から数字をフィルしてください。 このあと、Dが1のひと(つまり先頭の人)の来た時間を基準に指導開始時間を決めてください。 Dが2の人はDが1の人の終了時間を基準に開始時間を決めてください。このさい、Dが2の人の来た時間を考慮するのをお忘れなく。 以下同様に最後までくりかえす。 最後に、必要であればA’項目でもう一度ソートをかけてやれば実現できます。 がんばってみてください。
補足
返信ありがとうございます。 E列に同じ数が入ると次の値が入るようにしたいと思っています。 現在は A B C D E F G 1 Aさん 9:00 11:00 1 9:10 9:30 2 Bさん 9:00 11:00 1 9:10 9:30 3 Cさん 9:00 11:00 1 9:10 9:30 4 Dさん 9:00 11:00 1 9:10 9:30 5 Eさん 9:00 13:00 1 9:10 9:30 : : : : : : A列はコードナンバー(手入力) B列はVLOOKUP関数A列から C、D列もVLOOKUP関数 A列から E列はIF関数 IF(C1>=0.375)、1、IF(C1=0.4166666666666670)、2、IF(C1=・・・・ としています。 F、G列はDのVLOOKUPです。 A B C D E F G 1 Aさん 9:00 11:00 1 9:10 9:30 2 Bさん 9:00 11:00 2 9:30 9:50 3 Cさん 9:00 11:00 3 9:50 10:10 4 Dさん 9:00 13:00 5 10:30 10:50 5 Eさん 10:00 11:00 4 10:10 10:30 : : : : : : このようにしたいと思っています。 関数では難しいですか。