• ベストアンサー

エクセルの関数を使って、赤字月から最初に黒字月になった月を返すことはできないでしょうか。

どなたか助言ください。 エクセルで損益管理表を作っています。1行には1ヶ月目、2ヶ月目、3ヶ月、4ヶ月目・・・と入っており、2行目には営業利益率が各月単位で入っています。イメージは以下のような感じです。            A列   B列    C列    D列  1行目      1ヶ月目  2ヶ月目  3ヶ月目  4ヶ月目  2行目 営業利益率 ▲10%  ▲8%   ▲5%   3% このとき「最初の」黒字月である「4ヶ月目」をとなりますが、これを関数をつかって表示させたいです。どのような関数を使えばいいか教えていただけないでしょうか。 

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

数値はB2、C2、D2… と入力されているとすると =INDEX(1:1,LARGE(INDEX((A2:Y2<0)*(B2:Z2>=0)*COLUMN(B2:Z2),),SUM(INDEX((A2:Y2<0)*(B2:Z2>=0),)))) で「4ヶ月目」になると思います

raracha
質問者

お礼

できました! 迅速な回答ありがとうございました。助かりました!!

その他の回答 (4)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

◆1行目の「○ヶ月」を表示させるなら =INDEX(B1:H1,MATCH(1,INDEX(1/((A2:G2<0)*(B2:H2>0)),),0))

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆こんな方法もありますよ ★数値がB2~入力されているとして =MATCH(1,INDEX(1/((A2:J2<0)*(B2:K2>0)),),0)

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

例データ B2:H3に 1 2 3 4 5 6 7 利益率 -23 -12 -4 -3 2 5 -23 どこかのセルに =MIN(IF((B3:M3>0),COLUMN(B3:M3),99)) と入れて、Shif+CTRL+ENTERの3つのキーを同時押し。 配列数式 結果 6 6列目で+にはじめてなったということで、A列は見出しだから 6-1=5期目 ーー 質問の例示の▲10%   の質問表現が曲者で、表示形式でこう見えていると解釈した。 関数はあくまで、「値」を問題にするので、厳密に値がどうかを 質問に書かないといけない。 もし文字列だったら、式が大幅に変わる。

noname#202422
noname#202422
回答No.1

どういう風に表示させたいのでしょうか? 単に返すなら、ifでD4>0じゃだめですか。

raracha
質問者

お礼

はい。黒字になる月は変動するので、2行目全部を対象に検索する必要があります。説明が不足しすいませんでした。

関連するQ&A