- ベストアンサー
最大値となるセルの絶対番地を知りたいのです。
指定配列中の相対位置を返すMATCHではなく、 絶対番地、できれば(i,j)それぞれ行と列を返す方法 を関数でお願いします。 "A10"形式でもOKですが、"R1C1形式"ですと行と列の 取り出し方が分かりません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんちは 行位置 =INT(MAX(INDEX((セル範囲=MAX(セル範囲))*ROW(セル範囲)*257+COLUMN(セル範囲),))/257) 列位置 =MOD(MAX(INDEX((セル範囲=MAX(セル範囲))*ROW(セル範囲)*257+COLUMN(セル範囲),)),257)
その他の回答 (3)
- DoragonFang
- ベストアンサー率41% (91/221)
ANo.1です。 最大値が複数あった場合の処理はどうするのでしょうか? とりあえず、一番下の行位置を得るには、 =SUMPRODUCT((MAX(セル範囲+ROW(セル範囲)/1000)=セル範囲+ROW(セル範囲)/1000)*ROW(セル範囲)) で出来ます。 該当する最大値の中で、一番上の行位置を得るのは、 =SUMPRODUCT((MAX(セル範囲+(1-ROW(セル範囲)/1000))=セル範囲+(1-ROW(セル範囲)/1000))*ROW(セル範囲)) です。
- Wendy02
- ベストアンサー率57% (3570/6232)
MATCH は、相対位置ですね。だから、絶対位置に換えてあげれば済むことです。 =MATCH(MAX(R1C1:R20C1),R1C1:R20C1)+ROW(R1C1)-1 というように、+ROW(R1C1)を、範囲の先頭の番地を入れて、それを足して、1を引けばよいのですが、マトリックス(格子)で出すのでしょうか? マトリックスでは、MATCH の引数には使えませんね。 特にR1C1形式でも、変わらないと思いますが、例えば、R1C1:R20C4 までの範囲でしたら、 行: =LARGE(IF(MAX(R1C1:R20C4)=R1C1:R20C4,ROW(R1C1:R20C4)),1) 列: =LARGE(IF(MAX(R1C1:R20C4)=R1C1:R20C4,COLUMN(R1C1:R20C4)),1) これらは、配列数式ですから、配列の確定を、入力したら、F2を再度押して、Ctrl とシフトを押しながら、Enterで確定してあげます。ただし、これも相対位置ですから、検索範囲と、ROW(),COLUMN()の中を同じ範囲にしてあげればよいですね。 たぶん、これでできるかと思います。
- DoragonFang
- ベストアンサー率41% (91/221)
こんなので、どうですか? =SUMPRODUCT((セル範囲=MAX(セル範囲))*ROW(セル範囲)) これで、行位置が取り出せます。 列はROWをCOLUMNにかえれば同じです。
補足
ありがとうございます、早速やってみました。 ですが、最大値が二つあるとその二つ分が合算される?様です。 一つしかない場合は上手く動きました。 何か手はないでしょうか?m(__)m