- ベストアンサー
EXCELでシフト管理表の作成
英字で大文字(A)、小文字(a)を判別して、 LOOKUP関数を使用し該当する時間単位を参照したいのですが、 英字の大文字小文字の判別がうまくいきません・・・ 例えば・・・ 大文字はAM 小文字はPMです。 A=6.5 a=8.0 B=7.5 b=6.5 C=8.0 c=5.5 : : 外=4.0 引=8.0 などの組み合わせです。 DB化して値を持たせて、参照すれば できると思うのですが・・・ よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VLOOKUPの様に A列にキーとなる文字列(A1:A30) B列に対応する数字(B1:B30) の様に表が用意されていて 検索したい文字がC1に入力されている時 =SUMPRODUCT((EXACT(C1,A1:A30))*(B1:B30)) の様にすることができます。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
=CHOOSE(FIND(検索文字セル,"ABCabc外引"),6.5,7.5,8.0,8.0,6.5,5.5,4.0,8.0) の様にします。 この方法で、指定できる文字の種類は29までです。
お礼
ご回答ありがとうございます。 ただ、 ・"ABCabc外引" ・6.5,7.5,8.0,8.0,6.5,5.5,4.0,8.0 などをテーブルで読み込めれば、 なお使い勝手がいいんですが・・・ できませんか? 勝手を言ってすみません。 でも、応急処置で使わせていただきます。
- DoragonFang
- ベストアンサー率41% (91/221)
ちょっと、ご質問の内容でわからないことがあるのですが、要はあるセルに「A」を入力すれば6.5が、「a」であれば8.0が引き出せればいいということでしょうか。 いずれにせよ、LOOKUP関数は大文字小文字の区別をしませんので、そのままでは判別できません。 入力する側で、Aとaでなく、A1とA2のように入力することで問題はなくなるとは思いますが。 とりあえず、 参照する表が A B C D 1 A 6.5 a 8.0 2 B 7.5 b 6.5 3 C 8.0 c 5.5 4 外 4.0 5 引 8.0 と大文字+その他がA列、その引き当てる数字がB列に、小文字の方はC列とD列にあるとします。 入力するセルを仮にF1セルとし、F2セルに該当する数字を出すとすると、 F2セルに =VLOOKUP(F1,IF((CODE(F1)>96)*(CODE(F1)<123),INDIRECT("C1:D3"),INDIRECT("A1:B5")),2,FALSE) と入力します。 CODE関数で小文字かどうかを判定し、小文字ならC-D列を、その他ならA-B列を参照するようにINDIRECT関数を使っています。 ただし、この式のままでは、F1セルが空白か、表に無い文字を入れるとエラーになります。
お礼
ご回答ありがとうございます。 おっしゃる通りで、[A]を入力したら、6.5、 [a]を入力したら、8.0を引き出したいのです。 ただ、現行で午前は大文字で記入し、 午後は小文字で記入しているシフト表になっています。 できれば、現行のやり方を存続させたいのですが、 難しいようであれば、現場に変更の通知をするのみです。 一応、今回の回答内容を試させていただきます。 ありがとうございました。
お礼
助かりました。 本当に有難うございます。