• ベストアンサー

エクセルのIF関数、条件付書式について教えて下さい。

ちょっとややこしいのですが、ご了承下さい。 上司の指示で工程表を作成しています。 品数が非常に多いのですが、作りたいものは、カレンダー形式で、注文NO.を入力すると納期が表示され、カレンダーに色付けがされるというものです。   A     B     C     D    E  ...   K  1注文NO.  納期   変更納期  4/1   4/2     4/8 2 000023  4/2    4/8     3 000654  4/3    4/30 4 008453  4/5     -     B列の納期はVLOOKUPでDATE(年月日)で表示されていてD列からE列もDATE(年月日)で表示されていて、C列はyyyy/mm/ddで手入力です。 上記の表の場合、E2に納期と表示し、赤をつけ、K2に納期(2)と表示し、赤か出来れば青をつけたいのです。 私の使用しているのはエクセル2007ですが、同僚は皆2003を使用しているため、そこの部分も加味してご教授頂ければ幸いです。 つたない説明で申し訳ありませんが、宜しくお願いします。 ※ちなみに、IF関数でC2=D1,"納期",""と入力してみたのですが、 縦にも横にもコピーする方法がわからないのと、納期(2)の方はどうすればいいのかわからず行き詰まりました。 パソコンは独学で勉強中の段階です。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

Excel相対参照のテキストに載りそうな問題ですね。 まずは、「納期」の「日」に印をつけることを考えます。4/1の欄に 印をつけるなら、 =IF(B2=D1,1,0) これで、納期が4/1ならば"1"が、そうでないなら"0"になります。 こいつを一気にコピーできればいいのですが、コピーするとB2,C1まで 狂ってしまいます。そういう場合は相対参照を使います。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/nyumon/seiseki/sei-n04.htm こいつを理解されたら、 =IF($B2=D$1,1,0) こいつをコピーすれば、一気に全部定義できることが分かるはずです。 次に「変更納期」ですが、これは「納期」よりも優先するのが普通 ですから、先にチェックしておきます。 =IF($C2=D$1,-1,IF($B2=D$1,1,0)) これで、「変更納期」の日には"-1"が、「納期」の日には"1"が、他の 日には"0"が表示されているはずです。 まあ、コレでも分かると思いますし"-1"などの代わりに"納期"などに すればとりあえず見れるものを作れると思いますけど、どうせなら きっちり色を付けたいじゃないですか。そういう場合は「セルの書式 定義」でやっちゃいます。 「書式」「セル」の「表示形式」タブで「ユーザー定義」選び、「種類」 の欄にこんな風に書きます。 [赤]"納期";[青]"納期";;@ ユーザー定義書式については、この辺を見てください。 http://www.atmarkit.co.jp/fwin2k/win2ktips/331cellfmt/cellfmt.html 要は、値が正の時「赤字の"納期"」を、値が負の時「青字の"納期"」を 値が"0"のとき何も表示しないようにしてやっただけです。 IFでの値を「納期」にしてしまうと、「条件付書式」でも判断方法が面倒 になってしまいます(出来ることは出来ますが)、上記のような方法が たぶんスマートではないかと思いますけど・・・。

chakori-na
質問者

お礼

ご丁寧な説明ありがとうございます。 条件付き書式はカレンダーでもたくさん使ったので、 いい方法を教えて頂きうれしかったです!^^ …私の説明がおかしくて恐縮なんですが、出来ればセルの塗りつぶしで 赤や青をつけたいと考えているのですが、教えて頂いたサイトを 見てみた限りだと不可能なんでしょうか…?

その他の回答 (5)

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.6

#3さんの回答へのお礼に書いてあることは、 =IF(D$1="","",IF(D$1=$B2,"納期",IF(D$1=$C2,"納期(2)",""))) で解決すると思います。

chakori-na
質問者

お礼

会社のパソコンを使用しての質問でしたため、 インターネットが使えなかったり、土日をはさんだりでお礼が大変遅くなり申し訳ありませんでした。 おっしゃった通りにやってみたら無事解決しました!! ありがとうございます。(^O^)

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.5

#2です。 > D1に > =IF(D$1=$B2,"納期",IF(D$1=$C2,"納期(2)","")) > と書いて、 : > D1を他のセルにコピペすれば良いです。 と書きましたが、「D2に」「D2を」の間違いでした。

chakori-na
質問者

お礼

それはちゃんとできました☆ わざわざご親切にありがとうございます!

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

既回答と同じでしょうが 例データ C1:L5 納期 変更納期 4月1日 4月2日 4月3日 4月5日 4月8日 4月10日 4月15日 4月30日 4月2日 4月8日 - 納期 - - 納期2 - - - 4月3日 4月30日 - - 納期 - - - - 納期2 4月5日 - - - - 納期 - - - 4月10日 4月15日 - - - - - 納期 納期2 E2セルに =IF($C2=E$1,"納期",IF($D2=E$1,"納期2","")) と入れてL2セルまで式を複写。( 絶対番地指定の入れる場所の要領に尽きる課題。 E2:L2を範囲指定し、+ハンドルをL2で出し、E5:L6まで式を複写。 結果 上記の通り ーー セルに色づけ 条件付書式で、「セルの値が」で 第1条件に、次の値に等しい、納期、書式設定 追加 第2条件に、次の値に等しい、納期2、書式設定

chakori-na
質問者

お礼

非常にわかりやすい回答ありがとうございます!!

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

D2=IF($B2=D$1,"納期",IF($B2=D$1,"納期(2)","")) 書式-条件付き書式で 条件1「セルの値が」「次の値に等しい」「"納期"」で書式を押して赤を選択 「追加」で 条件2「セルの値が」「次の値に等しい」「"納期(2)"」で書式を押して青を選択 D2を必要分、縦と横にコピーする。

chakori-na
質問者

お礼

ありがとうございます!! 式をコピーさせて頂き私のやりたい表がまさに出来そうです! でも1個だけ、欲ばりなんですが、日曜日から始まるカレンダーで、 月の最初の曜日を出して1を表示してそこから+1をするようなカレンダーなんですが(また説明が下手ですみません。) たとえば4月だと火曜日から始まるので日、月の列は日付が表示されないようになってるんです。 そうすると、変更納期が決まってない製品に関して、日月の列に納期(2)がたくさん表示されてしまったのですが、これは直すことはできますか? なんでそうなってしまうのか考えてたら頭がグルグルしちゃって。……(@_@)いろいろ言ってすみません。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.2

D1に =IF(D$1=$B2,"納期",IF(D$1=$C2,"納期(2)","")) と書いて、 条件付き書式を 条件1 「セルの値が」「次の値に等しい」「="納期"」 書式で赤を設定 条件2 「セルの値が」「次の値に等しい」「="納期(2)"」 書式で青を設定 として、 D1を他のセルにコピペすれば良いです。 それにしても、ご自分で仰る通り、説明が下手ですねぇ(笑) 何回か読んで、やっと解りましたよ(笑)

chakori-na
質問者

お礼

(TдT)笑笑笑(^ε^;) 私も今読んでみると皆さんよく理解して下さったなぁと笑 ありがとうございました! 関数入れてみたら出来ました!! 結構何日間か悩んでたんですけど解決してよかったです!

関連するQ&A