教えてください。
Excel2003で下記の表があります。
データから5以上を拾い、最初に出現したデータの、列の最上部を示す関数はどうしたら良いでしょうか?

      A  B  C  D
ケースa  2  4  6  8  → C
ケースb  9  3  5  7  → A

ケースaでは、5以上は6と8なので、最初に出現した6の列であるCを表示
ケースbでは、5以上は9と5なので、最初に出現した9の列であるAを表示

A 回答 (3件)

F2: =INDEX(A$1:E$1,MIN(IF(B2:E2>=5,COLUMN(B2:E2),"")))


【お断り】上式は必ず配列数式として入力のこと
「データを抽出して、そのデータの列最上部を」の回答画像1
    • good
    • 0
この回答へのお礼

早速ご連絡をありがとうございました。
すごいです!できました。
配列数式もこうやって使うんですね!驚きました。

お礼日時:2017/06/17 03:27

配列数式を使う。



・・・
A2セルからD3セルにかけて入力があるとします。
空いているA4セルに次の数式を入れる。
 =A2>=5
そしてA4セルをD4セルまで複製する。
更にA4セルからD4セルをA5セルからD5セルへ複製する。

これは5以上なら「True」、5未満なら「False」が返る数式です。
この中で一番初めに「True」が出てきたセルの場所を返せばよいのですから
MATCH関数で調べればいい。
すると
 =MATCH(TRUE,A2:D2,0)
さらにこの結果をINDEX関数の列数に指定すればいいので、
 =INDEX($A$1:$D$1,,MATCH(TRUE,A2:D2,0))
となる。
この数式をコピーして
 =INDEX($A$1:$D$1,,MATCH(TRUE,A3:D3,0))
とすれば3行目の結果も得られます。
 
空いている行を作業用に使ってのでとても面倒になりました。
ならば、作業用の列でやっていることを連続して行うように書き換え「配列数式」にすればいい。
 =INDEX(A1:D1,,MATCH(TRUE,A2:D2>=5,0))
と、MATCH関数の範囲に対して「True」か「False」かの判定を含めてしまう。
さらにこの数式を入力したら、ShiftキーとCtrlキーを押しながらEnterキーを押して入力を確定する。
すると数式は
 {=INDEX(A1:D1,,MATCH(TRUE,A2:D2>=5,0))}
と中括弧で囲まれる。
これが「配列数式」になっている表示。中括弧をキーボードから入力しても配列数式にはなりません。

正しく表示出来たらA4セルからD5セルの数式を消しておく。

・・・
こんなでしょうか。
「データを抽出して、そのデータの列最上部を」の回答画像3
    • good
    • 0
この回答へのお礼

回答をありがとうございました。
考え方も丁寧にご記入いただき、大変ありがとうございました。
私にはハードルが高いです。

お礼日時:2017/06/17 03:29

こんばんは!



やり方だけ・・・

↓の画像でH2セルに
=INDEX(B1:E1,MIN(IF(OFFSET(B1:E1,MATCH(G2,A1:A100,0)-1,,1)>=5,COLUMN(B1:E1)-1)))

配列数式なので、Ctrl+Shift+Enterで確定!
エラー処理はしていません。

これでG2セルのデータを入れ替えるだけで結果が表示されると思います。m(_ _)m
「データを抽出して、そのデータの列最上部を」の回答画像2
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング