• ベストアンサー

「期間」を1日ごとの日程表に置き換えたい

例えば、横浜が1~4日、7~8日     広島が3~5日、7~8日     巨人が2~3日、6~8日 というように「期間」を入力して、これを -横広巨 日浜島人 1○--    2○-○ 3○○○ 4○○- 5-○- 6--○ 7○○○ 8○○○ (「-」は空白で便宜上入力しただけです) というような日程表に置き換えたいのです。 lookupでできるのかなとは思ったのですが、期間のところでつまずいています。

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

  • ベストアンサー
noname#262398
noname#262398
回答No.2

では、病人から一案を… I列  J列 横浜 0 1   4 7   8 期間の表を上記のようにすれば、 =IF(LOOKUP($A2,I$2:I$10,J$2:J$10)>=$A2,"○","") セル参照は適当です。 1日~じゃない場合にエラーが出るので、0日~というデータを付け加えなければならないのが難点かな。

major51ichiro
質問者

お礼

おおっ、この方がすっきりしていますね。 汎用性も高そうで、月またぎでも対応できそうです。 ありがとうございます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

これはVBA向きの問題のような気がする。エクセル関数病(^○^)の方が多いので、やってみました。 B2からL2まで 巨人 1日 ~ 4日 7 8 12 14 18 21 24 27 30 30 とします。C2、D2は書式で上記のように見せて、セルの値は数値にすること。 C2は書式は##"日"、D2は書式は="~"##"日"、以下手抜きで略。 A4:A34まで1-31の数値をオートフィルする。 「xx日からyy日まで」は最多6ペアーしかないものと仮定する。 かな・までの塊で1日しかないときはペーアーで同じ日を入れること。 ’---- B4(1日に当たる)に式 =IF(((ROW()-3)>=$C$2)*((ROW()-3)<=$D$2)+((ROW()-3)>=$E$2)*((ROW()-3)<=$F$2)+((ROW()-3)>=$G$2)*((ROW()-3)<=$H$2)+((ROW()-3)>=$I$2)*((ROW()-3)<=$J$2)+((ROW()-3)>=$K$2)*((ROW()-3)<=$L$2)+((ROW()-3)>=$M$2)*((ROW()-3)<=$N$2),"○","") と入れる。長いが繰り返しが多いので意味はわかるでしょう。 何日より大きく「かつ」何日より少ないを6ペアー並べ、どれかの塊に該当すればよいので、+で結んでいる。 結果は 1 ○ 2 ○ 3 ○ 4 ○ 5 6 7 ○ 8 ○ 9 10 11 12 ○ 13 ○ 14 ○ 15 16 17 18 ○ 19 ○ 20 ○ 21 ○ 22 23 24 ○ 25 ○ 26 ○ 27 ○ 28 29 30 ○ 31 となる。 広島も同じように考えて式の修正すべき箇所は修正してください。 別シートに造るなら、Sheet1を参照する部分は、Sheet1!をセル番地の先頭につけてください。 関数式での回答は、あきらめてもらうために出します(^○^)。 もっと良い回答が出る(?)ことを待ちましょう。

major51ichiro
質問者

お礼

有難うございます。 ちゃんと同じ結果を再現できました。 私も「関数病」かもしれません。

関連するQ&A

専門家に質問してみよう