• ベストアンサー

エクセルの関数について

エクセルの関数に関するしつもんです。 一行中の値の中でマイナスの数値がいくつかあります。マイナスの値のなかで最左列にある値の列の最上位行の値を返したいのですが倫理式がわかりません。教えて下さい。 

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

最上位行の意味が添付画像の1行目ということなら、以下のような数式で該当データを表示させることができます。 =INDEX($1:$1,MIN(INDEX((A2:H2>=0)*100+COLUMN(A2:H2),)))

joystic12
質問者

お礼

申し訳ありません、当方の入力ミスだったようです。 無事解決しました。非常に助かりました。 ありがとうございました!

joystic12
質問者

補足

MackyNo1さん回答ありがとうございます。 添付画像の通りにエクセルを作成し、数式をJ列2行目に入れましたが、エラーになってしまいます。なぜでしょうか?

その他の回答 (4)

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

質問者は、回答の通りコピペしたら、出来ましたというレベルだろうが、本件は関数としては難しい部類の問題なんだ。 最左列というのが曲者で、マイナス列が2列以上ありえるのがさらに難しくする。 (1)それで配列数式を使う回答になったりする。 (2)配列数式を避けるには技巧的な関数式になる そういうことをことを感じ取って。 >倫理式 論理式だろう。もっと言うなら関数式という言葉を使うべきだろう。 ーーー どちらかというとユーザー関数(VBA)向きの問題で 標準モジュールに Function Mretu(a) For Each cl In a If cl < 0 Then Mretu = cl.Column Exit Function End If Next End Function をつくり 式では =INDEX(A1:I1,0,mretu(A2:I2)) 例データ A1:I2に a b c d e f g h i 1 1 4 4 -4 5 -2 3 3 として 結果は e

joystic12
質問者

お礼

丁寧な答え有難うございます。こまっていたので助かりました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 ANo.3です。  申し訳御座いません、先ほどの関数を、回答欄に入力する際に、一部打ち込みミスが御座いました。 【誤】 =IF(COUNTIF(2:2,"<0"),INDEX($1:$1,MATCH(-(2^-1022),$1:$1,-1)),"") 【正】 =IF(COUNTIF(2:2,"<0"),INDEX($1:$1,MATCH(-(2^-1022),2:2,-1)),"")

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 今仮に、最上位行が1行目の事でありるものとします。  その場合、例えば、2行目の中にある、マイナスの値が入っているセルの中で、最も左にあるセルが存在する列の1行目の値を返す関数の一例は、次の様なものとなります。 =IF(COUNTIF(2:2,"<0"),INDEX($1:$1,MATCH(-(2^-1022),$1:$1,-1)),"")

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

「最上位行」というのがナンのことを言ってるのか説明不足ですが,まぁどこか指定の(既知の)行の値をとってきたいのだとして。 とりあえず一番手っ取り早い式で。 添付図: =IF(COUNTIF(A4:F4,"<0"),INDEX($1:$1,MIN(IF(A4:F4<0,COLUMN(A4:F4)))),"") と記入し,かならずコントロールキーとシフトキーを押しながらEnterして入力します。

joystic12
質問者

お礼

説明不足申し訳ありませんでした><; 聞きたい事は、回答通りの事でした。 非常に参考になりました。 ありがとうございました!

関連するQ&A