プロが教えるわが家の防犯対策術!

会社用のシフト表から個人向けの出勤表を作りたいのですが、どのような関数や式を使えば良いかわかりません
・図の上の表を下の表のように変換、若しくは連動させたい
・出勤表の対応するセルに複数の値を表示したい

具体的な式、参考になる資料など教えていただければと思います
また市販のソフト等で同じような事ができるものがあれば知りたいです

「エクセル 会社用のシフト表から個人向けの」の質問画像

A 回答 (2件)

参考の添付画像だと、上と下の整合性が取れてないけど・・・



上の表をの日付セルを A1
上の表をの日付セルを A11

とするなら、
C12セル(月曜の田中のセル)に以下の式を入れて、
全体にコピー。
これでできます。

=IF(COUNTIF($C2:$F2,C$11),RIGHT(IF($C2=C$11,",A","")&IF($D2=C$11,",B","")&IF($E2=C$11,",C","")&IF($F2=C$11,",D",""),COUNTIF($C2:$F2,C$11)*2-1),"㉁")

もっとエレガントにできるかもしれませんけど、エクセルでも不可能じゃないよということで参考に。
「エクセル 会社用のシフト表から個人向けの」の回答画像2
    • good
    • 1

No.2の式をざっくり説明。



=IF(COUNTIF($C2:$F2,C$11),RIGHT(IF($C2=C$11,",A","")&IF($D2=C$11,",B","")&IF($E2=C$11,",C","")&IF($F2=C$11,",D",""),COUNTIF($C2:$F2,C$11)*2-1),"㉁")

COUNTIF($C2:$F2,C$11)

$C2:$F2 の範囲(1日のA~Dのセル)に、C$11("田中")が何個あるか数える。

1個もなければ「㉁」。【終了】

1個でもあれば…
  ↓
IF($C2=C$11,",A","")&
IF($D2=C$11,",B","")&
IF($E2=C$11,",C","")&
IF($F2=C$11,",D","")

上の表$C2セル(1日A)に名前があれば「,A」、
上の表$D2セル(1日B)に名前があれば「,B」、
上の表$E2セル(1日C)に名前があれば「,C」、
上の表$F2セル(1日D)に名前があれば「,D」、
の文字列をつなげる。

最後に
RIGHT(~~~,COUNTIF($C2:$F2,C$11)*2-1)

で、一番最初の「,」を消す(右側から、[見つけた個数]×2-1文字分を残す)【終了】

セルの指定で「$」がついているのは、セルの絶対参照。
式をコピペしても、「$」がついているところは固定されているてものですが、
ご存知でなければ検索してみて下さい。
(質問者がどの程度のスキルを持っているかわからないので)
    • good
    • 1
この回答へのお礼

ありがとうございます。サンプル表で試したところ完璧でしたが
本格的な表で試したところいくつか不具合がでました。こちらの
入力ミスか設定の間違いと思います。基本的な考え方として
大変参考になりました。もう少し試行錯誤してみます。

お礼日時:2020/02/20 19:29

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

このQ&Aを見た人はこんなQ&Aも見ています