- ベストアンサー
ある数値以上の値があるセルを取得したい
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>なぜINDEX関数が補助列の代わりになるのか理解できませんが B2~B11の値が{1;1;5;4;2;3;1;1;1;1}とすればINDEX関数で1列の配列値の行番号を0または無指定にすると INDEX(B2:B11>=3,0) ↓ {1;1;5;4;2;3;1;1;1;1}>=3 ↓ {FALSE;FALSE;TRUE;TRUE;FALSE;TULUE;FALSE;FALSE;FALSE;FALSE} のように配列値として外側のMATCH関数へ渡されます。 従って、補助列のA2:A11の前処理の代わりになります。 しかし、配列値の要素数が多くなると計算負荷が増加して動作が緩慢になります。
その他の回答 (3)
- msMike
- ベストアンサー率20% (364/1804)
- mdmp2
- ベストアンサー率55% (438/787)
関数では条件を満足する最初に出現するセルの位置しか取得できないのでVBA でやるしかないと思います。 「分かればいい」だけなら、条件付き書式で、条件に合うセルを塗りつぶすとかフォントの色を変えたら良いと思います。
お礼
ありがとうございます。 今回は関数で「最初に出現するセルの位置」を取得したかったのです。
- bunjii
- ベストアンサー率43% (3589/8249)
>仮に3以上の値が出現するセルの位置を取得する場合 補助列の数式「=B2>3」は誤りで「=B2>=3」にしてください。 「3以上」は3も含みますので間違わないようにしてください。 >ご教示ください。 補助列を使わない方法を知りたいのですか? =MATCH(TRUE,INDEX(B2:B11>=3,0),0) INDEX関数内で前処理をすれば補助列の代わりになります。 また、INDEX関数を使わないときは次のようになりますが数式を確定するときにCTRLとShiftを押しながらEnterの打鍵で配列数式になりますので同等の結果を得られます。 数式バーには次のように表示されます。 {=MATCH(TRUE,B2:B11>=3,0)}
お礼
bunjiiさん、お世話になります。 >補助列の数式「=B2>3」は誤りで「=B2>=3」に ご指摘の通りですね、ありがとうございます。 =MATCH(TRUE,INDEX(B2:B11>=3,0),0)ですか! なぜINDEX関数が補助列の代わりになるのか理解できませんが、これで「最初に出現するセルの位置」を取得することができました!! ありがとうございます。
お礼
bunjiiさん、詳しい解説をありがとうございます。 とても勉強になりました。