エクセル関数を教えてください。

下記のシフト表のようなものを作成しているのですが、

【Sheet1】
   A列    B列  C列   D列 ・・・・ 
1 氏名    4/8   4/9   4/10・・・・
2 勤務者名  ●   △    ■

B列以降は連続した日付で
2行目は出勤日に記号を入力します。
記号は仕事種類によって違うので、種類はいろいろあります。
ちなみに、【Sheet1】のひな形は変更不可です。

この表を元に【Sheet2】に勤務者名を入力すると、
最初に出勤した日と、最後に出勤した日を表示させたいのです。

IFやVLOOK関数を使うのかな?と思いいろいろやってみたのですが、
うまくできませんでした。。。
ご協力よろしくお願いします。
 

このQ&Aに関連する最新のQ&A

A 回答 (4件)

添付図参照



Sheet2 おける式(何れも配列数式)は次のとおり。
B2: {=IF(A2="","",MIN(IF(OFFSET(Sheet1!$A$1,MATCH(A2,Sheet1!$A:$A,0)-1,1,,31)="",10^7,OFFSET(Sheet1!$A$1,,1,,31))))}
C2: {=IF(A2="","",MAX(IF(OFFSET(Sheet1!$A$1,MATCH(A2,Sheet1!$A:$A,0)-1,1,,31)="",0,OFFSET(Sheet1!$A$1,,1,,31))))}
「エクセル関数」の回答画像4
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
見本の表も添付していただき大変分かりやすかったです。
ありがとうございました!

お礼日時:2011/04/11 18:16

>2行目は出勤日に記号を入力します。



既出回答でも指摘されていますが,出勤日に記号を手入力していて,出勤していない日はホントに何も入ってない数式も入ってないただの空セルになっているなら
最初の出勤日:
=IF(COUNTA(Sheet1!B2:IV2),INDEX(Sheet1!B$1:IV$1,MATCH("*",B2:IV2,0)),"")
最後の出勤日:
=IF(COUNTA(Sheet1!B2:IV2),INDEX(Sheet1!B$1:IV$1,MATCH("",B2:IV2,-1)),"")

実際に何列から何列までの表になっているのかご相談が手抜きですが,ちゃんと実際のセル範囲に合わせて数式を直してから使ってください。
    • good
    • 0
この回答へのお礼

説明不足ですみませんでした。
ご回答いただきありがとうございました!

お礼日時:2011/04/11 18:20

 その関数を考える際に、出勤していない日は何と入力されているのか知る必要がありますので、補足等でお教え願います。


 もし、出勤していない日には何も入力されていない場合には、その事をお教え願います。

この回答への補足

説明不足ですみません。
休日は一斉にとるので、表に反映させていません。
ということで、B列以降は何らかの記号が入っていることになります。
よろしくお願いします。

補足日時:2011/04/08 17:14
    • good
    • 0

一例ですが


最小=MIN(IF($B2:$BA2="",”2099/12/31"*1,$B$1:$BA$1))
と入力してCtrl+Shift+Enterで配列数式に
最小=MAX(IF($B2:$BA2="",0,$B$1:$BA$1))
と入力してCtrl+Shift+Enterで配列数式に
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なぜか最小も最大もエラーが出てしまうのですが・・・
もう一度範囲など確認して試してみます。

お礼日時:2011/04/08 17:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報