• ベストアンサー

エクセルの表から近似値の行列番号を求めたい

エクセルで作成した表があります。 その表中から別に指定した値の近似値の一番上の行と一番左の列の値を求める方法を教えてください。 表は、行に1~9、列にA~Eとそれぞれ見出しをつけ、表の中にはランダムな数字があります。 その中から、別に指定した値の近似値の行列の見出し(例えば“3-C”というように…)を求めたいのです。 良い方法がありましたら、教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.2

こんにちは 例えば  入力される数値は 0~100 とすれば  A11に指定値を入力として =TEXT(MOD(MAX((TEXT(100-ABS($A$1:$F$9-$A$11),"000")&ROW($A$1:$F$9)&COLUMN($A$1:$F$9))*1),100),"0行0列") と数式バーに記入後 Ctel+Shift を押したまま Enter で入力確定 で試してみて下さい 式中の  TEXT(100-ABS($A$1:$F$9-$A$11),"000") が値の差を求めて桁そろえしているものです 表の最大桁が例えば 10000 までなら式も  10000-**********,"00000" と2箇所変更 となります。 10000の方は入力の値以上であれば適当でOK "00000"は、その引き算の結果の最大桁以上とします ROW($A$1:$F$9) 行値を埋め込むための式です 2桁行までの範囲であれば桁揃えのために前記し 式同様 TEXT(ROW(範囲),"00") とする必要があります COLUMN($A$1:$F$9) 列値を埋め込むための式で扱いは上記の行値と同様 最右列を優先する場合、上記式と数式記載順を入れ替えます。 出た結果を繋ぎ合わせるてから数値化  ((100-値の差)&行値&列値)*1 で出た配列値の中で最大値を選ぶ  MAX({**,**,**,**・・・・**,**})  差が最小 かつ  差が同じ場合行値が大きい かつ  行値も同じ場合列値が大きい ものが「最大値」となります その中で下2桁が行値と列値なので抽出 MOD(*,100) 10の位:行値 1の位:列値 なのでTEXT()の表示形式で"0行0列"としています。 行数列数2桁になる場合のそれぞれの変更点は MOD(*,10000) "00行00列" です。 このやり方で列を記号で取得するにはもう一工夫必要 ですが、この値を参照して別セル表示した方が非常に 簡単です 行(数値) 列(記号) 必要であれば記載します

machiko
質問者

お礼

ご回答ありがとうございます。 こんなに複雑にいろいろな関数を組み合わせるのですね…。 自分1人で考えていたのでは、この様なことはとってもじゃないですがたどり着けないと思います。 各関数についても丁寧にご説明いただきありがとうございます。 大変助かりました。

その他の回答 (1)

  • comv
  • ベストアンサー率52% (322/612)
回答No.1

こんにちは 補足をお願いします 1)近似値の定義ですがどれでしょうか? ・直近上位 指定10に対して9と12があったら12 ・直近下位 指定10に対して8と11があったら8 ・上位でも下位でも直近であればOK 2)同じ1)の値が複数セルに有った場合の優先 例えば E1(一番右) と A9(一番下) だと どちらが優先? 3)入力される値は小数点以下もありますか?

machiko
質問者

補足

質問文が不足してましてすみませんでした。 1)近似値は上位でも下位でも直近であればOKです。 2)同じ値があった場合はA9(一番下)を優先したいです。 3)入力値は整数のみです。 お手数をお掛けしますが、よろしくお願いいたします。

関連するQ&A