- ベストアンサー
エクセル関数で最初の900以上の数値を取得する方法
- エクセルの関数を使用して、特定の条件を満たす最初の数値を取得する方法について質問です。
- 具体的には、B列とC列にある数字の中から、D1に指定した値以上の最初の数値をE1に求めたいです。
- わかる方がいましたら、教えていただけると助かります。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
E1に =INDIRECT(TEXT(MIN(IF(B1:C15>=D1,ROW(B1:C15)*10+COLUMN(B1:C15))),"!R0!C0"),FALSE) と記入して,コントロールキーとシフトキーを押しながらEnterで入力してみます。
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
>エラー表示が出た 回答した通りに出来ていません。ちゃんとやれば出来ますので,もう一度回答をよく読んで, ○あなたが自分で書いたご相談通りに自分でもサンプルを作ります。 ○寄せられた回答通りに数式や手順を行います ○ちゃんと出来ることを確認してから,実地のデータにやり直します。 それで,いったいどんなエラーが出たんですか? #VALUEが出たなら,回答したとおりに操作できていません 900と入れて900以上の値がないと#REFが出ます。 他にも入れた数式が間違っていれば,当然エラーになります。 それに一体,具体的にあなたはどんな式を入れたんですか? しばしば,実際のデータは全然違うところに入っているのに回答の式を直しもせずに入れてみたり,実地のデータに合わせたつもりが回答の式を直し間違えて「デキナイできない」と訴えるご相談もよくありますので。
お礼
先程の数式でできてました。 言われたとおり入力ミスをしていました。 すみません。 本当に助かりました。 ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
普通の技量ではなかなかむつかしい課題でしょう。 配列数式という仕組みを使うなど必要。 (数式配列を使わない方法があるかもしれないが) データが2列に亘っている点も難しくしている。 既に出ているご回答も相当熟練者で無いと思いつかない、理解できないのでは。 そこで、簡単なVBAを使うがユーザー関数を作る。 Googleででも「VBA ユーザー定義関数」で照会して記事を読んでください。 ーー 理屈そのものは、単純に1セルずつ順次、D2より大かどうか聞いているだけ。 これもなじみが無い、ということなら本回答は無視してください。 VBE画面で標準モジュールに ーーー Function fst(a, b) For Each cl In a If cl > b Then fst = cl Exit Function End If Next End Function ーーー D2セルに =fst(B2:C16,D2) と入れる。 結果 994 ーーー ただし2列のセル範囲をZ字状に順次探索していく。
お礼
ご回答ありがとうございました。 VBAはできないので勉強して理解したいとおもいます。 ありがとうございました。
配列数式とか「!R0!C0」が理解できない人のために、“原始的な”方法を紹介します。 添付図参照 1.セル I2 に式 =OR(B2>=D$1,C2>=D$1) を入力 (セル I1 は空白のまま) 2.次の条件で[フィルタオプションの設定]を実行 抽出先 “指定した範囲” リスト範囲 $B$1:$C$100 検索条件範囲 $I$1:$I$2 抽出範囲 $G$1:$H$1 3.セル E2 に式 =IF(G2>=D1,G2,H2) を入力
お礼
ありがとうございます。 その方法でできたのですが D1以下に数値を入れた時も 同様にE列に表示はできないでしょうか? データが1000行くらいあるので対処しきれません。 よろしくお願いします。
お礼
エラー表示がでてしまうのですが なにがいけないんでしょうか?