エクセルガントチャートでの関数について

このQ&Aのポイント
  • 仕事でガントチャートを作成しており、日数が開始日と終了日のみならばよいのですが、中間提出という設定があり困っています。
  • チャート部分の表示方法は、日付が開始日から中間日までは"1"、中間日から終了日までは2として条件付き書式で色を付ける。
  • チャートエリアへの表示のための関数を作成したいが、日付のセルがすべて埋まっていない場合に値がうまく返らない問題があります。
回答を見る
  • ベストアンサー

エクセルガントチャートでの関数について

仕事でガントチャートを作成しております。 ただ、日数が開始日と終了日のみならばよいのですが、中間提出という設定があり困っております。 仕事での環境はOSはxp、エクセルは2003です。(添付は投稿用に同じ仕様を2007で作成しました。) チャート部分の表示方法ですが、日付が開始日から中間日までは"1"、中間日から終了日までは2として条件付き書式で色を付ける。"1"とのセルはピンク、2は黄色とします。(チャートにする為だけの数字なので数字は見えないようにセルを塗りつぶす)。中間日は"中"と表示し、こちらは目印となるように"中"は文字として見えるようにして、セルの色は1と同じピンクとします。 そこで、チャートエリアへの表示のための関数なのですが、A列に開始日、B列に中間日、C列に終了日を入力し、4行にある日付と対応させて、D列からのチャートエリアのセルに上記数字・文字を反映させるようにしたいのです。困っているのは、日付のセルがすべて埋まっていない場合があり、値がうまく返らないのです。(例としては添付を見ていただきたいです) いろいろ試したのですが、IFだとネストレベルが足りません。自分の組み方が悪いと思うのですが... とりあえず入れて運用しているのは下記の関数です。 =IF(D$4=$B6,"中",IF(AND($B6<>"",D$4>=$A6,D$4<$B6),1,IF(AND($B6<>"",D$4<=$C6,D$4>$B6),2,IF($B6="",IF(AND(D$4>=$A6,D$4<=$C6,OR(AND($A6="",$C6=D$4),AND($A6=D$4,$C6=""))),1,""),"")))) 命令が足りていないのはわかっているのですが解決できませんでした。 どう説明すればいいのかうまくできず、乱文・長文になって申し訳ありませんが、よろしくお願いいたします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

最初から条件をちゃんと書いてくれたらいいのに この程度なら関数の不得意な私でも出来ますよ =IF(OR($A6=D$4,AND($A6<>"",$A6<=D$4,$B6>D$4),AND($A6<>"",$B6="",$C6>=D$4)),1,IF($B6=D$4,"m",IF(OR($C6=D$4,AND($B6<>"",$B6<D$4,$C6>=D$4)),2,""))) もう少し、端折れそうですが また条件が変わると面倒なので はい、どうぞ

elie0999
質問者

お礼

これでばっちりでした。 説明不足でお手数掛けて申し訳ありませんでした。 自分でもこれぐらい組めるようにいろいろ組み方を練習します。

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

#1です、間違えた =IF(AND($A6<=D$4,$B6>D$4),1,IF($B6=D$4,"m",IF(AND($B6<D$4,$C6>=D$4),2,""))) すいません

elie0999
質問者

お礼

すみません。 値がうまく返らないというのを説明しておりませんでした。 ABCがすべて埋まっていなくても帰るようにしたいのです。 ・今のままですと、たとえばcにのみ7/31となっていると7/31までの前がすべて値が入ってしまいます。それを7/31のみに値が入るようにしたいのです。ABCのすべての記入パターンに対応させたいのです。 ご回答いただいた式を入力してみたのですが、だめでした。 ありがとうございました。

elie0999
質問者

補足

・ABCすべての日付が入っていた場合、  開始日>=中間日=1  中間日=中  中間日>=終了日=2 ・ABCどれか1項目のみ入力があった場合  (下記いずれか反映)  Aのみ記入 開始日にのみ1  Bのみ記入 中間日にのみ中  Cのみ記入 開始日にのみ2 ・AとBに記入がある場合  開始日>=中間日=1  中間日=中 ・AとCに記入がある場合  開始日<=終了日=1 ・BとCに記入がある場合  中間日=中  中間日>終了日1 となるようにしたいのです。 こんなに大事な説明を漏らしていたなんて本当に申し訳ありません。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

こういう事? =IF(AND($A6<D$4,$B6>D$4),1,IF($B6=D$4,"m",IF(AND($B6<D$4,$C6>=D$4),2,"")))

関連するQ&A

  • エクセル SUMPRODUCT関数について教えてください

    エクセルで作成した表から ○○かつ●●のデータ個数を求めたく、 SUMPRODUCT関数を こちらで調べておりましたが どうしても解決しない部分があります。 どうぞ よろしくお願いいたします。 下記8桁数字は、日付です。 カウントしたい数は、B列(終了)が、A1セルに入力された年月かつ、区分(C列)が「A」の数です。 =SUMPRODUCT((LEFT(B2:B100,6)=A1)*(C2:C100="A")) こちらで、『B列=A1セル かつ C列="A"』のみのカウントは出来たのですが、 終了延長(D列)が空欄でない場合は、D列日付データの方をカウントする。 早期終了(E列)が空欄でない場合は、D列・B列よりも E列を優先し、カウントする。という条件を付けたいのですが、 Sheet1 A1セルに「200810(数を調べたい年月を入力)」 (開始)  (終了)     (区分)  (終了延長)  (早期終了)  A列     B列      C列     D列      E列 20061001   20081001   A    -        - 20070926   20081020   A    -        - 20071102   20081009   A    20081201    - 20080101   20081013   B    -        - 20080208   20081010   A    -        20080210 ・・・ この場合、「2」となるようにです。 IF、OR関数あたりかな と考えておりますが、SUMPRODUCT関数のどの部分で条件付ければ良いか解りません。 説明下手で大変申し訳ございませんが、ご助力いただければ幸いです。 

  • エクセルの関数

    A列に日付B列に金額が入っています。 C1とD1に日付を入力するセルをつくり C1の日からD1の日のB列金額の合計を出したい場合 どのような関数を使えば良いですか?SUMIFで出来ますか?

  • エクセル関数で、ご教示下さい

    例として、セルA1~A10に、1.2.3.・・・・10と番号を入れて       セルB1~B10には、商品の在庫数が入力されているとします。 この時、セルC1に集計の開始番号 セルC2に集計の終了番号を入力すれば、      D1に開始番号から終了番号までのB列の合計を表示させたいのですが、      このような集計ができるD1に入れる関数はあるでしょうか。 例えば、B列の3行目から6行目までの合計をD1に表示させたい場合に      C1にA列番号の3を入力、C2には6を入力すれば、D1にB3からB6の合計を      表示してくれる、といった関数です。      開始番号、終了番号は、何番~何番までと、その都度変わります。 どなたか、よろしく、お願いいたします。         

  • エクセルでIFとANDを使った関数について教えて下さい

    A B C D E F G 1 1 2 3 結果 2/3 2/4 2/5 2 2/3 2/4 2/5 合格 0 0 1 3 上記のような表を作成しようとしています。条件が、 D1が「合格」で、 C2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じなら「1」、 違うなら「0」、 B2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じで尚且つ、 C2が「空欄」なら「1」、違うなら「0」、 A2の日付がE1(該当セル、E1なら2/3、F1なら2/4)と同じで尚且つ、 C2が「空欄」で、B2が「空欄」なら「1」、違うなら「0」 を返しなさい。 という関数を作りたいのですが、上手くいきません。 IFとANDを使えばいいと思うのですが、どのように組み合わせれば 良いでしょうか。 真を返す、優先順位は、C2、B2、A2、のセルです。 C2に日付が入ってるときはB2とA2に日付が入っていても カウントされないように(偽が入るように)したいのです。 ちなみに、最初は、 =IF($D2="合格",IF($C2=E$1,1,IF($B2=E$1,1,IF($A2=E$1,1,0))),0) と、入れてましたが、これだと、C2に日付が入った時にC2だけカウント したいのに、B2もA2もカウントされてしまいます。 どうか、良きアドバイスをお願いします!!

  • IF関数 論理が複数の場合について

    IF関数について教えてください。 添付のような表があり、 本日7/20で B列に日付が入っていたら、B列の日付とC列の状況 B列に日付が入っていなければA列の日付とC列の状況をみて D列に"完納"か"遅延"かを表示させたいのですが、 =IF(AND(C2="済",B2<TODAY()),"完納","遅延") この式ではB列に日付が入っていない時はA列の日付を見る ということが入っていません。 どのように修正したらよいのかご教示お願いいたします。

  • Excel2003でif関数を使うとSUM関数で反映されません

    A1セルに金額を入力すると、B1に1と表示させる為に=IF(A1,"1","")といった数式を入れております。 さらにC1にBセルの合計値を表示させる為に=SUM(B1)C2には=SUM(B1:B2)と入力しているのですが、B列のセルにIF関数を使った数字『1』が表示されてもC列セルに反映されないので困っています。 ここで質問ですが、A列セルに金額が入力されるとB列セルに数字『1』が表示され、更にC列セルにB列セルの合計値が表示される様な関数等はありますでしょうか?解り難い説明ですいません。 因みにA、B、C列共に1~31までのセルがあります。

  • ガントチャート

    まったく思いつかないので皆様のお知恵をお貸しください A列には開始日付 Bには終了日付が書いてあります Cを1日AGを31日とした1セル1日の月管理です 開始から終了までの日を表すセルに色を付けたいのですが 月跨ぎがありうまく考えられません ■はセルに色がついていると考えてください A      B    C D E F...........AG 1/1    1/3 ■■■ 12/31  1/4 ■■■■ 1/4    2/3     ■■■・・・■ とこんな感じです 先月からの引継ぎだと普通に終了まで 来月に繰り越しだとその月の最後までセルに色を付けたいです。 どうぞ宜しくお願いします。

  • エクセルで複数のセルの合計をIF関数も含めて出す方法

    初歩的だと思うのですが・・ 異なった文字が入った各セルの合計を別セルにてIFを使用し、数字を出しながらなおかつ集計する方法がわかりません。  A   B    C   D 1 い   ろ 2     は   に   3 ほ       4 へ   と 5 A列に文字が入ると常に 500 B列に文字が入ると常に 200 C列に文字が入ると常に 100 として、D列にA-Cの合計(何もなければ空欄)を出したいのです。この場合だとD1=700, D2=300, D3=500...となるように。 IF(A1="","",500)+IF(B1="","",200)+IF(C1="","",100) のちゃんとした関数式を教えてください。よろしくお願いします。。

  • IF関数の選択肢を増やす方法について

     例・・・A1セルに4、B4セルに3、C5セルに2が入力されると                                    D1セルに5が表示。      A1セルに3、B4セルに2、C5セルにAかBが入力されると                                    D1セルに6が表示。                         ・                         ・                         ・                        続く。 D1セルに、 =IF(AND(A1=4,B4=3,C5=2),5,IF(AND(A1=3,B4=2,OR(C5="A",C5="B")),6,・・・・  のような感じで増やしていたのですが、IFが7つで限界?のようなのですが、 何か方法はありますか?もしあれば教えてください・・・。 エクセル2003です。よろしくお願いします。

  • エクセルの簡単な関数ですが。

    私はエクセルで旅日記を書いています。 A列には「今日で何日目か」 B列には「日付」 C列には「曜日」 D列には「行動時刻」です E列には「内容」です。 質問です。 A3に =IF(B3="","",DATEDIF($B$2,B3,"D")) としB3に日付が入ったら、「一日目、2日目」と増える(つもり)で書いたのですが、2日目で【1】と入ります。2日目だから【2】としたいのです。 仕方なく、B2にダミーの日付を入れて誤魔化していますが、この場合どんな関数を使ったらいいんでしょうか。

専門家に質問してみよう