• ベストアンサー

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化して値を持たせて、参照すれば できると思うのですが・・・ よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

VLOOKUPの様に A列にキーとなる文字列(A1:A30) B列に対応する数字(B1:B30) の様に表が用意されていて 検索したい文字がC1に入力されている時 =SUMPRODUCT((EXACT(C1,A1:A30))*(B1:B30)) の様にすることができます。

emiryu
質問者

お礼

助かりました。 本当に有難うございます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

=CHOOSE(FIND(検索文字セル,"ABCabc外引"),6.5,7.5,8.0,8.0,6.5,5.5,4.0,8.0) の様にします。 この方法で、指定できる文字の種類は29までです。

emiryu
質問者

お礼

ご回答ありがとうございます。 ただ、 ・"ABCabc外引" ・6.5,7.5,8.0,8.0,6.5,5.5,4.0,8.0 などをテーブルで読み込めれば、 なお使い勝手がいいんですが・・・ できませんか? 勝手を言ってすみません。 でも、応急処置で使わせていただきます。

回答No.1

ちょっと、ご質問の内容でわからないことがあるのですが、要はあるセルに「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セルが空白か、表に無い文字を入れるとエラーになります。

emiryu
質問者

お礼

ご回答ありがとうございます。 おっしゃる通りで、[A]を入力したら、6.5、 [a]を入力したら、8.0を引き出したいのです。 ただ、現行で午前は大文字で記入し、 午後は小文字で記入しているシフト表になっています。 できれば、現行のやり方を存続させたいのですが、 難しいようであれば、現場に変更の通知をするのみです。 一応、今回の回答内容を試させていただきます。 ありがとうございました。

関連するQ&A

  • シフト管理表の作成でわからないことが・・・

    エクセルの関数やマクロはほぼ初心者で、わからないことだらけなので教えてください。 シフト管理表で、半月ごとのシフト表(作成用)で、日単位のシフト表(自動作成)が出来るようにしたいのです。 半月シフト      a     b    c     d     e  ・・・(人) 1/1 1~5        2~3        2~5 1/2 1~5   2~5        2~3 1/3 2~5   1~3  2~3 上記ように作成したら日単位で 1/3 b 1~3 l c 2~3 l a 2~5 l のように日単位で別シートに自動作成できるようにしたいのです。 (dとeは日単位には表示されずに、出勤者のみ時間が早い順に表示) フォーマットは決められており、現在手入力の為ミスが多く時間もかかり・・・ わかりにくかったらごめんなさい もしかしたら簡単かも?しれないけどまったくわからないのでお願いします。

  • EXCELの表作成について

    EXCELについて質問です。 表Aと表Bから表Cのような結果を出すためには、 どうすれば良いでしょうか? 下記の例ではたいしたデータではありませんが、 膨大な数のデータがあるとして、関数などEXCELの機能を活用して簡単に 結果を出したいと思っています。 【表A】 A    B     C    D 1     A店 B店 C店 2 パソコン 3 掃除機 4 冷蔵庫 5 テレビ 【表B】 A店   B店   C店 パソコン パソコン パソコン 掃除機  冷蔵庫  掃除機 冷蔵庫  テレビ  テレビ 【表C】 A    B    C    D 1     A店 B店 C店 2 パソコン ○ ○  ○ 3 掃除機  ○    ○ 4 冷蔵庫  ○ ○ 5 テレビ     ○  ○ ※表A内で、表Bに該当する箇所に"○"が記入されます。 ※1~5はEXCELの行 ※A~DはEXCELの列 当方、EXCELは使い慣れていいますので、 多少難しい方法でも構いません。 (ややこしい関数の組み合わせも理論さえ理解すれば大丈夫です) どなたか分かる方がいましたら、 よろしくお願い致します。

  • EXCELでLOOKUPがうまくいきません。

    EXCEL2000です。解説書を見ながら、検索関数のVLOOKUPと LOOKUP関数を比較していたのですが、VLOOKUPだとうまくいくのですが、LOOKUPだと望むべき答えが出ません。D列にC列の値をA1:B4の表から参照するという簡単なものです。 この式で、単純に答え(D欄)が1、2、3、4となるべきだと思うのですが・・以下の具合です。  A B C D 1○ 1 ○ =LOOKUP(C1,$A$1:$A$4,$B$1:$B$4)答4  2× 2 × =LOOKUP(C2,$A$1:$A$4,$B$1:$B$4)答2 3△ 3 △ =LOOKUP(C3,$A$1:$A$4,$B$1:$B$4)答3 4□ 4 □ =LOOKUP(C4,$A$1:$A$4,$B$1:$B$4)答2 どこがおかしいのでしょうか?よろしくご指導ください。

  • エクセル変わった表の作り方

    例えばABCと三つの文字があるとして、これらの全ての組み合わせは(A,B,C,AB、AC、BC、ABC)七種類ですよね。これをエクセルで一発で表にしてくれる方法ないですかね?A,B,C,D・・・・と入力したら全ての組み合わせが表示されるようにしたいのですが・・・無理ですか?いちいち自分で全部しらべて入力するしかないですかねー?教えてください。お願いいたします。

  • エクセルでタイマー関数?

    実際のリアルタイムな時間で AM0:00~AM6:00までA班仕事 AM6:00~PM12:00までB班仕事 PM12:00~PM:6:00までA班仕事 PM6:00~AM0:00までB班仕事 だとします。 そこで リアルタイムな時間がAM0:00だとしたらセルA1に あと6時間00分00秒でB班の仕事はじめです。と表示させたいです。 リアルタイムな時間がAM6:00だとしたらセルA1に あと6時間00分00秒でA班の仕事はじめです。と表示させたいです。 「6時間00分00秒」の時間の部分は1秒単位でカウントダウンを6時間単位で24時間し続けてほしいです。 かのうでしょうか?

  • 【エクセル関数】 営業管理表の作成

    御世話になります。 エクセルで、営業管理表の作成をしておりますが、 以下のような表を作成しています。 おそらく、LOOKUP、INDIRECTなどを使うのだと思うのですが、 お分かりになる方がおられましたら御願いいたします。 【表】 A    B    C      D 受注金額 計上月 0804月売上 0805月売上 0   0 58,800 4 0   0 100000 5 20000 6 50000 4 ・集計方法  CにBで4月と表示されているプロジェクトの受注金額の合計を 表示させる。  どうように、D以降も5月6月と続いており、同様の集計をしたい。 以上。 宜しく御願いいたします。

  • エクセル 関数 countif について

    A列、B列に -100~100 を10単位で入力 A列&B列でC列に文字列を生成 D列にcountifでC列の文字列がいくつあるかカウント 10-20の組み合わせが1個 20-10の組み合わせが3個 なのですが、どちらも4個と表示される ほかの組み合わせでは 正しい個数が表示される 何を改善したらよいでしょうか?

  • isalpha()関数について

    isalpha()関数について ◆開発環境 OS:Linux(Ubuntu9.10) コンパイラ:gcc4.4 IDE:eclipse 言語:C 《質問内容》 現在、char型配列A[8](最大8桁の文字列が格納されるため)に英字から始まる文字列(英字・数字)を入力し、 2文字目の文字を英字かどうか判別し、if文で分岐させようとしているのですが、 この2文字目の文字をisalpha()にかけても、英字と判別せず、思い通りの処理ができない状態で 困っています。 現状、以下のソースですと、"D0"ならelse ifに入りますが、"SM0"と入れるとifに入らずに、else ifに入ってしまいます。(2文字目は英字なのに…) 以下に、参考ソースを添付します。 どなたか、お分かりの方いらっしゃいましたら、ご教授お願いします。 できれば、isalphaの使い方等も詳しく教えていただけたら幸いです。(webで調べるとisalpha(int c)と書いてあり、文字の判別にint?とかなり疑問です。一応、ソース上ではchar型にキャストしてますが。) 《ソース》 char A[9]="";      //最大8桁の文字列(英字・数字)が入る char B[3]="";        //A,B入れ替え用バッファ char C[7]=""; //最大6桁の文字列(数字)が入る char code[2]="";      //判別用バッファ int C_val; //Cの10進値格納変数(後で使う) fscanf(stdin,"%s",&A); strncpy(code,,A+1,1);                  //code[2]に"0"をコピー if( (unsigned char)isalpha(code) != 0){          //codeが英字なら先頭2文字は英字 strncpy(B,A,2);             strncpy(C,A+2,strlen(A)-2); C_val=atoi(C); //Cの10進化 strcpy(A,"");    //Aの初期化 strcpy(A,B); strcpy(B,""); //Bの初期化 } else if( (unsigned char)isalpha(code) == 0){    //codeが英字でないなら先頭1文字が英字 strncpy(B,A,1); strncpy(C,A+1,strlen(A)-1); C_val=atoi(C);          //Cの10進化 strcpy(A,""); //Aの初期化 strcpy(A,B); strcpy(B,""); //Bの初期化 }

  • エクセルで組み合せ一覧表を作成したいです

    エクセルでシート1のA1~O1の各セルには、アルファベットや数字(1~50)が入っています。 A1~O1までの15個のセルから、6つを選択した時の組み合せ一覧を作成したいと思っています。 組み合わせは計算すると、15C6となるので全5005通りになります。 組み合せの一覧は、シート2に表示させたいです。 (a,b,c,d,e,f)と(b,a,c,d,e,f)は同じものとします。 またA1~O1のセルに入るのは、アルファベットと数字の組み合せが複雑であれば、数字のみとしたいと思います。 関数だけで何とかしようと思いましたが、どうしても無理のような気がしてしまいましたので、こちらにご質問をさせて頂きました。 VBAの知識もないため、自分でプログラムを組む事もできません。 シートにVBAを組み込む方法は、これまでに経験があるので理解しております。 アドバイスを頂けると嬉しく思います。 何卒、よろしくお願い致します。

  • エクセルのFIND関数の複数セル参照について

    C4=LOOKUP(0,0/FIND(B4,テーブル1[アドレス]),テーブル1[名称])  「テーブル1」の「アドレス」列を部分一致で検索し、「B4」セルの文字列に該当する項目があったら、「テーブル1」の「名称」列のデータを「C4」セルに表示するよう、インターネット上の情報を参照しながら数式を組んでいます。  ところが、「B4」セルの文字列に該当する項目があるときはいいのですが、該当項目がない場合は「#N/A」と表示されるため、「IF」関数を追加し、以下のようにしたところ、うまく動きませんでした。 C4=IF(COUNT(FIND(B4,テーブル1[アドレス])),LOOKUP(0,0/FIND(B4,テーブル1[アドレス]),テーブル1[名称]),"未使用")  「数式の検証」で調べたところ、「LOOKUP」関数内の「FIND」関数は「テーブル1」の「アドレス」列の各セルをそれぞれ参照しているのに対して、「COUNT」関数内の「FIND」関数は同じ行(C4の場合は4)の「テーブル1」の「アドレス」列しか参照していませんでした。 「LOOKUP」関数内の「FIND」関数のテーブル1[アドレス]: {"アドレス1";"アドレス2";"アドレス3"} 「COUNT」関数内の「FIND」関数のテーブル1[アドレス]: "アドレス4"  参照内容が異なるのはなぜでしょうか。  この場合、どのようにすればよろしいのでしょうか。  また、「LOOKUP」関数は「旧バージョンとの互換性を維持するためのもの」となっており、代わりに「VLOOKUP」や「HLOOKUP」、「MATCH」関数などで代用はできないのでしょうか。  何卒ご教示よろしくお願いいたします。

専門家に質問してみよう