• ベストアンサー

シフト表をエクセルで

下図のように空白カレンダーに時間を打ち込んでいくと、 その人だけのシフトが出るように関数を組むことは可能でしょうか? 可能だという方は是非ともやり方を教えて下さい。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! Excel2007以降のバージョンをお使いだとしての一例です。 ↓の画像で上側がSheet1の元データで下側のSheet2に表示するとします。 Sheet2の項目は入力済みだとして・・・ Sheet2のA2セル(セルの表示形式は 日付 にしておきます)に =IF(B2="","",INDEX(Sheet1!$A$2:$A$100,SMALL(IF(OFFSET(Sheet1!$A$2:$A$100,,MATCH(B$1,Sheet1!$1:$1,0)-1)<>"",ROW($A$1:$A$99)),ROW(A1)))) B2セルに =IFERROR(INDEX(OFFSET(Sheet1!$A$2:$A$100,,MATCH(B$1,Sheet1!$1:$1,0)-1),SMALL(IF(OFFSET(Sheet1!$A$2:$A$100,,MATCH(B$1,Sheet1!$1:$1,0)-1)<>"",ROW($A$1:$A$99)),ROW(A1))),"") どちらも配列数式になってしまいますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合、 上記数式をドラッグ&コピー → A2セル(B2セル)を選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式ん前後に{ }マークが入り配列数式になります。 次にA2・B2セルを選択 → B2セルのフィルハンドルで2列ずつ右へコピー → そのまま下へコピー! これで画像のような感じになります。m(_ _)m

m6a8s4a0
質問者

お礼

関数だけでなく手順まで示していただき非常によくわかりました。 おかげさまでうまく作ることができました。 ありがとうございます。

その他の回答 (2)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>下図のように空白カレンダーに時間を打ち込んでいくと、その人だけのシフトが出るように関数を組むことは可能でしょうか? 可能です。 Excel 2013で検証した結果は貼付画像のようになりました。 手順 日付の抽出 F2=IFERROR(INDEX($A$1:$D$1000,SUMPRODUCT(SMALL(((B$2:B$1000="")*10000+(B$2:B$1000<>"")*ROW(B$2:B$1000)),ROWS(F$2:F2))),1),"") F2セルをG2、H2セルへオートフィルでコピーする。 F列とG列およびG列とH列の間に1列ずつ挿入する。 時間の抽出 G2=IFERROR(VLOOKUP(F2,$A$2:$D$1000,(COLUMNS($F2:F2)+1)/2+1,FALSE),"") G2セルをI2とK2セルへコピーする。 仕上げ F2セルからK2セルを選択してオートフィルで下へ必要数をコピーする。 Excel 2007以降のバージョンで同様な処理が出来るはずです。

m6a8s4a0
質問者

お礼

ありがとうございます。 職場のエクセルは2003なので助かりました。

  • karorumon
  • ベストアンサー率26% (25/94)
回答No.1

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1310803658 http://okwave.jp/qa/q2555213.html こういった内容を参考に考えてみてください^^

m6a8s4a0
質問者

お礼

ありがとうございます。 やはり似たような質問をしている方はいらっしゃるんですね。 参考になりました。

関連するQ&A