• 締切済み

エクセル、抽出の仕方

すみません。先ほども投稿したのですが、まだ、いい方法が見つからないので・・・。 エクセルで勤務表を作っています。 2交代のローテーション勤務で、   1,2,3,4,5,6,7,8、・・・(日付) 1 日 日 日 日 休 休 夜 夜 ・・・ 2 休 日 日 日 日 休 休 夜 ・・・ 3 休 休 日 日 日 日 休 休 ・・・ 4 夜 休 休 日 日 日 日 休 ・・・ 5 夜 夜 休 休 日 日 日 日 ・・・ ・ 班 こんな感じなのですが、例えば6日の日勤は3、4、5班とセルに入れたいのです。 別シートかもしくは、セルZ20;Z22へ3、4、5でもいいですし、セルZ20(少し大きめにして)に3,4,5でもかまいません。 何かいい方法がありましたら、教えてください。 よろしくお願いいたします。

みんなの回答

noname#79209
noname#79209
回答No.4

#3です。 前の質問の前段にも書きましたが、基本的にシフト表の視認性が悪いので、このようなソリューションを求めることになるのだと思います。 計算式だけで解決しようと思わず、 1.シフト表のタテヨコを入れ替える。 2.日勤のセルは、「条件付書式」で日勤時の色を変える。 これだけで、かなり見易くなるのではないですか? 計算式も考えては見ますが...

messi0912
質問者

お礼

すみません。不慣れなもので大変失礼いたしました。 以後、気をつけます。 何とかVBAで組んでみようと思っています。 (できるかどうかわかりませんが・・・) ありがとうございました。

noname#79209
noname#79209
回答No.3

> すみません。先ほども投稿したのですが、まだ、いい方法が見つからないので・・・ だったら、前の質問を締め切ってから質問してください。 前の質問に回答してしまった後で、この質問を見つけました。 この質問の補足でのみ、班の数が2桁だと言う情報が追加されていて、回答者に負担を掛けることになります。 マルチポストは違反行為ですし、質問が消される恐れもあります。 管理者側から質問が消されてしまうと、回答者諸氏からの大切な回答も併せて消えてしまいます。

  • luckymako
  • ベストアンサー率55% (29/52)
回答No.2

まず、例を見て一般化するのは無理でしたので、できるだけ実装しやすく、汎用的になるようにしたつもりです。 日付、班数は可変にできるということになります。 以下の例では参照の位置関係を分かりやすくするためにSheetを分けていますが、Sheetをまとめることもできます。その際には参照位置をシフトさせて下さい。 まず、元となる表、質問にあるような表は Sheet1の 日付が 1行B列 から 1行(m)列 班が 2行A列 から (n)行A列 日、休、夜のデータが 2行B列 から (n)行(m)列 に入力されている物とします。 1. Sheet2に日付と班が同じ位置になるようにコピーまたは参照させます。 2. Sheet2 の 2行B列 に次のように入力します。 =IF(Sheet1!B2="日",$A2,"") 3. 2行B列 のセルを選択し選択枠右下の黒塗りのボックスをドラックし、 データが入力されている 2行B列 から (n)行(m)列 まですべてコピーします。 この状態で Sheet2 には Sheet1 で日と書いたところが班の番号になった新たな表が出来上がります。 4. 1.と同様にSheet3に日付と班が同じ位置になるようにコピーまたは参照させます。 5. Sheet3 の 2行B列 に次のように入力します。 =IF(ISERROR(SMALL(Sheet2!B$2:B$6,$A2)),"",SMALL(Sheet2!B$2:B$6,$A2)) 6. 3.と同様に 2行B列 のセルを選択し選択枠右下の黒塗りのボックスをドラックし、 データが入力されている 2行B列 から (n)行(m)列 まですべてコピーします。 この状態で Sheet3 には Sheet2 で抽出された班番号が小さい順に上に詰められて並ぶ新たな表ができます。 7. 最後に必要な部分を参照で指定するだけです。 Sheet1 20行Z列 に =Sheet3!G2 と入力し、 3. 6.と同様に 20行Z列 のセルを選択し選択枠右下の黒塗りのボックスをドラックし、22行Z列 までコピーで完了です。

messi0912
質問者

お礼

参考になりました。 同一シートにできるように何とかがんばってみます。 ありがとうございました。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.1

Z20に =IF(G2="日",$A2,"")&IF(G3="日",$A3,"")&IF(G4="日",$A4,"")&IF(G5="日",$A5,"")&IF(G6="日",$A6,"") 数字の間に「,」をつけるのであれば =IF(G2="日",$A2&",","")&IF(G3="日",$A3&",","")&IF(G4="日",$A4&",","")&IF(G5="日",$A5&",","")&IF(G6="日",$A6,"")

messi0912
質問者

お礼

早い回答ありがとうございます。 班が14班あるのでもう少しまとまった式がよかったのですが、ちょっと無理みたいですね。 何とかもとのシートを替えてみたりして考えて見ます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう