エクセル関数で位置としての行列値の扱い方がわからない

このQ&Aのポイント
  • エクセルのA列とB列に入力された値について、A列の設定値以上となる最初のセルと同行のB列の値を取得し、その値を用いて最小値を求めたい。
  • MATCH関数を使用してA列の設定値以上のセルを見つけられるが、その値を使用してB列のセルの位置行列値を取得する方法がわからない。
  • VLOOKUP関数でも同様の処理ができるが、下のセルを参照するためにはセルの位置行列値を下にずらす方法がわからない。
回答を見る
  • ベストアンサー

エクセル関数内で位置としての行列値の扱い方がわからない

例えば エクセルでA列とB列があり値が入力してあります。 A列の値が最初からだんだん増加し設定値以上になった、そのセルと同行でB列のセルの位置をだし、 B列セルの最初からそのセルまでを範囲で参照して その値群の最小値を求め、値を抜き出したいのです。 そこでA列にMATCH文を使用したらはじめのセルから何番目が設定値以上の値のセルかは出るのですが、その値をどのようにして関数で最初のセルの位置行列値に加えたらいいのかが分かりません。 VLOOKUP関数でもできそうなのですが出てきた値のその下のセルを参照したいのですが、やっぱりセルの位置行列値を下にずらす(例 B10→B11)方法が分かりません。 結局、たぶん関数内部で位置としての行列値の扱い方がわからないのが原因だと思います。 誰か教えていただけないでしょうか。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 A1:B10にデータがあるとします。 また、A列は小さい順に並んでいるとします。 設定値をD1に入力する場合、 =MIN(B1:INDEX(B1:B10,MATCH(D1,A1:A10,1)+1-(COUNTIF(A1:A10,D1)>0))) で出来ます。 なお、No.2の方の方法では、設定値と同じ値がA列にあった場合に上手くいかないと思います。

5drywater
質問者

お礼

成功しました、ありがとうございました。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >A列の値が最初からだんだん増加し設定値以上になった、 >そのセルと同行でB列のセルの位置をだし、 >B列セルの最初からそのセルまでを範囲で参照して >その値群の最小値を求め、値を抜き出したいのです。 それはできるけれども、ロジックとしてヘンではありませんか? だんだん増加し(インクリメント)した場合は、インクリメントの初期値が最小値だから、  B列セルの最初からそのセルまでを範囲 ということなら、最初から=初期値 が、それにあたるのではありませんか? その初期値は、範囲の始めであって、その位置は、人間が決めているのではありませんか? ランダムというなら話は理解できますが、今度は、検索範囲が成り立ちません。 文章は、何か条件が足りないのではありませんか? 具体例を出してほしいです。

5drywater
質問者

お礼

ありがとうございました。

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

例データ 設定値を40とします。 A2:A9 1 3 5 7 12 34 56 78 どこでも良いがA12に =MATCH(40,A2:A9,1)+2 で8。第2行目から始まるので+1とMatch関数の型の1(第3引数)は「以下の最大」なので 設定値「以上」を求める、のために+1の合わせて+2 8行目で40を超えます。 B列B2:B10に 34 46 35 15 21 32 45 54 78 とします。 求めるセルに =MAX(INDIRECT("B2:B"&A12))と入れて 結果46 A12の式と結合して1つで表すと =MAX(INDIRECT("B2:B"&MATCH(40,A2:A9,1)+2)) また設定値40をセルの値としてB1とかに置き換えられます。

5drywater
質問者

お礼

ありがとうございました。

  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.1

これはOFFSET関数です。 (例) =MIN(OFFSET(B1,0,0,5,1)) B1から下に5行の範囲の最小値。 =MIN(OFFSET(B1,3,2,7,4)) B1から3行下、2行右(つまりD4)から下に7行、右に4列の範囲の最小値。

5drywater
質問者

お礼

ありがとうございました。

関連するQ&A

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • VLOOKUP関数

    式は正しくできあがったと思うのですが、 参照する値が最初からA列に入っているのですが 後からB列にVLOOKUP関数を入れてもエラーになってしまい、A列の参照する値をもう一度上書きするとB列に正しい値が表示されます。 参照元と参照先の表示形式も同じですし、半角、全角を間違えている事もありません。 セルによっては、A列にただ上書きするだけでB列が表示されるものと、A列に参照元の値をコピペしないとB列が表示されないものがあります。 正しい値が表示されるので、式自体は間違えていないと思うのですが、何がおかしいのかわかりません。 よろしくお願いします。

  • 関数 数式 Excel

    すみませんが教えてください! E列に下のような関数を入れたところ正しく表示されませんでした・・・ どうぞよろしくお願いします。 A列(数字・空白を含む)が 1 の場合”◎” A列が1以外の場合は B列(別シートから参照のVLOOKUP関数が入っている)と C列(別シートから参照ののVLOOKUP関数が入っている) を足した数字が D列(別シートから参照ののVLOOKUP関数が入っている) が同じなら ”OK” 違うなら ”NG" と表示させたいので =IF(A1=1,"◎",IF(D181=(B181+C181),"OK","NG")) としてみましたが"◎"が表示される表示は正しいのですが "OK" "NG"が正しく表示されません。 これに加えていずれのセルにも空白が存在するのでエラーを出さないようにしたいです。 よろしくおねがいします!!

  • Excelの関数で、セルの位置情報を出したい

    VLOOKUP HLOOKUPなどで数値を検索して出したあと、 その数値がどのセルに入っているか表示させる関数は組み立てられるでしょうか? 検索範囲内の端から、1、2。。。って表示されるタイプではなく、 A10とかC5とかで出したいです。 さらに、位置を出したセルから、ひとつ下へ下がったセルの数値を参照したい、ということは出来ませんか? VBAは全く分かりません。 関数で出来ないなら諦めます。。。

  • ExcelでのVLOOKUP関数について

    キー1を1000倍したうえで完全一致のVLOOKUP関数を使うと#N/Aエラーが発生します。 表示上は同じように見えますが内部的に異なる値となっているのでしょうか? 試しにエラー行に対して、キーとターゲットとなる当該セルを「=」でつないで確認しても「TRUE」となります。 添付画像は、 検索先としてA列に基準キーを130.168~130.192(step 0.001)で各行へ入力し、B列はA列を1000倍、C列はB列をROUND関数で整数値に丸めたものをキーとしました。 D列にVLOOKUPで参照する値を入力し、E列以降で以下の異なるパターンで値を参照しています。 (1)【E・F列】 ・E列に整数値をキーとして130168~130192(step 1)で入力。 ・E列をキーとしてB~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,B:D,3,FALSE)』 (2)【G・H列】 ・G列にE列/100をキーとして計算。 ・G列をキーとしてA~D列のVLOOKUP関数としています。   『=VLOOKUP(G3,A:D,4,FALSE)』 (3)【I列】 ・E列をキーとしてC~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,C:D,2,FALSE)』 シートを複製し、キーの入力範囲を0.001~0.025(E列は1~25)にした場合はエラーがでませんでした。 その他の確認としてはTEXT、JIS、ASCなどを組み合わせて文字列としたキー同士のVLOOKUPではエラーにならず値を参照できています。

  • EXCEL 関数をふくむ行列の入れ替え

    いまSheet1に3列*2行で A1+A10 B1+B10 C1+C10 A2+A11 B2+B11 C2+C11 といった関数が入っているとして、 別のシートに、この関数から導き出される値の行列を入れ替えた状態で表示したいのですが、どういった方法があるのでしょうか? ちなみに値だけを行列の入れ替えをしたいのではなく、関数を活かしたまま行列を入れ替えたいのですが、一般的な「形式を選択して貼り付け」で行列の入れ替えにチェックをいれても、エラーが返ってきてしまいうまくいきません。 さらに、その別のシート上でSUMなどの関数で縦・横・の集計など計算をしたいのですが・・・ いい方法があったら教えてください。

  • エクセル関数について

    エクセルの関数について質問です。 例えば、 C1セルには、数値データが入っています。 A2~A10セルに日付データ。 B2~B10セルに数値データが入っている表があります。 B11セルの値に、(C1データ)-(A列の最新日付セルと同行のB列データ)を表示させたい場合、 どのような関数を作成すればよいですか。 宜しくお願いします。

  • excelのvlookup関数で値ではなくセルの位置を返せますか?

    どなたかお詳しいかた教えていただけますでしょうか? excelのvlookup関数は通常該当するセルの値を返すと思うのですが、そのセルの位置(A4とか)を返す方法はありますか? 例えば、以下のようなEXCELのシートがあったとします。 =VLOOKUP("いちご",A1:B4,2,0)とすると、”200円”と表示されると思うのですが、このセルの位置(この場合は"B4")を求める方法ははありますか?   A  B 1りんご 100円 2みかん  80円 3バナナ 150円 4いちご 200円 お詳しい方よろしくお願い致します。 m(__)m

  • Excel 関数 列内の文字を参照し隣列の値を返す

    Excel2003です。 関数を使ってみたのですが、思うようにいきません。 C列を参照し、「みかん」という言葉があれば、そのセルの隣の列の値(D列の「B」)を、A1に表示したいです。 最初は、VLOOKUP関数を使えばいいと思っていましたが、「検索値」というものがはっきりしない為、使用できない?のでしょうか? 「みかん」という単語を探し出すには「COUNTIF」でしょうが、その関数では、直接その値を返すのみなので、何かの関数と組み合わせるのか、それとももっと良い関数があるのでしょうか? なお、C列に「みかん」という単語は一度しか登場しない為、列内に複数「みかん」が存在している場合にの対処法は、不要です。単純に、「みかん」の値の2列目だけをA1セルに表示させたいのです。

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

専門家に質問してみよう