Excelで近い値のセルの隣接セル同士の参照・抽出方法

このQ&Aのポイント
  • Excelを使用して近い値のセルの隣接セル同士の参照と抽出を行いたい場合、以下の手順に従うことができます。
  • まず、データが格納されているセル範囲を選択します。次に、条件付き書式を使用して、X2の値と最も近い値のX1の隣のY1を強調表示します。
  • 最後に、セルの数式バーに以下の数式を入力して、Y1×Y2の値を計算し、Y3として表示します。この操作により、X2とY3の値を持つデータを出力することができます。
回答を見る
  • ベストアンサー

Excel: 近い値のセルの隣接セル同士の参照・抽出について

Excel: 近い値のセルの隣接セル同士の参照・抽出について よろしくお願い致します。 題目ではうまく説明できず申し訳ありません。今、 X1   Y1   X2    Y2 1    35    1.1    50 2    40    2.9   81 3   20     5.3   2 4   10    5.6    15 5    22    10.0   25 6   11    18.4    10 (中略) 100   32    250.2   14 といった二つのデータ(X1,Y1)と(X2,Y2)があります(位置合わせがうまくできずすみません)。X1は整数、他は実数です。X2の値と値の間隔は不定です。 X2の値と最も近い値のX1の隣のY1を参照し、Y1×Y2の値をY3として出力したいと思っています。 具体的には、 X1    Y1    X2    Y2    Y3 1    35    1.1    50→   (1.1≒1)35×50=1750 2    40    2.9    81→    (2.9≒3)20×81=1620 3    20    5.3    2→    (5.3≒5)22× 2=44 4    10    5.6    15→   (5.6≒6)11×15=165 5    22    10.0    25   … 6    11    18.4    10 (以下略) と計算し、 X2    Y3 1.1    1750 2.9    1620 5.3    44 5.6    165 (以下略) といったデータにしたいのです。 Excelでこのような操作を行うことができるでしょうか。御教示ください。 できればマクロなどを使わない方法でお願いします。 よろしくお願い致します。

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

  • ベストアンサー
  • soixante
  • ベストアンサー率32% (401/1246)
回答No.1

2行目からデータとして、Y3の列の2行目に、 =VLOOKUP(ROUND(C2,0),$A$2:$B$100,2,0)*D2 と入れて、下まで引っ張れば終わりです。 ROUND関数で、X2 の値を四捨五入し、 それを検索値として、Y1を求め、 Y2を乗じています。

laplasma
質問者

お礼

御回答頂きありがとうございます。疑問の内容を適切な検索語にできず、解答にたどりつけずに困っておりました。HPで詳細を調べましたが、vlookup関数はうってつけですね。round関数も便利そうです。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! アドインソフトになってしまいますが・・・ ↓のURLのようなものもあるみたいです。 http://kiyopon.sakura.ne.jp/soft/minx.htm m(__)m

laplasma
質問者

お礼

御解答頂きありがとうございますm(__)m 無料ソフトウェアを使うやり方もあるのですね。難しいですが、勉強になります。エクセルは奥が深い…。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

X1の数値の種類や並び順に関係なく差の絶対値の最小値を検索する汎用性のある数式にするなら以下の配列数式にしてください。 =INDEX(B:B,MAX((MIN(ABS(C2-$A$2:$A$100))=ABS(C2-$A$2:$A$100))*ROW($A$2:$A$100)))*D2 配列数式ですので、入力後Ctrl+Shift+Enterで確定してください。

laplasma
質問者

お礼

いくつも御教示頂きありがとうございます。関数を調べ切れていないのですが、汎用性のあるやり方のようですね。勉強になります。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

X2のデータが必ずX1のデータに入っているなら(四捨五入した値がX1に必ず存在するなら)、Y3の値は以下の式で表示できます。 =INDEX(B:B,MAX(INDEX((ROUND(C2,0)=$A$2:$A$100)*ROW($A$2:$A$100),)))*D2

laplasma
質問者

お礼

御解答頂きありがとうございます。勉強させて頂きます。

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

基本的にはVLOOKUPのFALSE型でX1の数に当たる数で表のB列を引き、B列の値でD列の値をかければよい。検索が済めば、ここからは簡単。 A列(X1)は正整数と断言できますか?はっきり質問に書くべきでは。 ーー VLOOKUP関数にTRUEがたという質問に近い関数の種類があるが、超えない最大値、とかで少し違うので使えない。四捨五入で良いのですか? ーー 値  1とに差 2との差 1.1 0.1 0.9 1.2 0.2 0.8 1.3 0.3 0.7 1.4 0.4 0.6 1.5 0.5 0.5 1.6 0.6 0.4 1.7 0.7 0.3 1.8 0.8 0.2 1.9 0.9 0.1 1.5(両者の差0.5で同じ)の場合どうすべきですか?小数点以下2桁以下の端数が付いて 実際ではこういうことが起こらず、差さを採って採用を決めるべきですか。

laplasma
質問者

補足

御回答頂きありがとうございます。説明が足らず申し訳ありません。 X1は今回は自然数ですが、今後負の数で計算する場合もあると思い整数とさせて頂きました。 四捨五入に関しては仰る通り端数の桁が多く、1.5ちょうどといったx1はほとんどないので、問題ありません。

関連するQ&A

  • [Excel] 値のない範囲を参照するグラフを値がある範囲を参照するようにする

    お答え願います。 Excelのグラフで何も値が入力されていないセルを参照する系列を挿入したとします。 この際、凡例は表示されますが、グラフ上に線は表示されないのはわかります。 ここから値が入力されているセルに参照先を変えるには、 [グラフ上で右クリック]→[元のデータ]→[系列]→Yの値の参照セル範囲を変更するとできるんですが、これをマクロで行う方法はありますか? 試したところ、Yの値を変えるにはSeriesCollection(x)をアクティブにしないといけない気がするんですが、グラフ上に線が表示されていないせいか、エラーになってしまいます。 大雑把な質問ですが、足りない点がありましたら補足しますので、どうかご教授願います。

  • excel2010の条件によるセルの参照方法

    excel2010の特定の条件下のセルの参照の式についてご質問させて頂きます。 例えば、A1のセルに、以下のようにするように式を書くにはどのようにしたらよろしいでしょうか? E1, E2, E3, E5, E6 に大小の数値が入っていたとします。 それらのセルの中で、最大値のセルを探し、 E1が最大値の時はX1、E2が最大値の時はX2、E3が最大値の時はX3・・・以下同。 のセルを参照する。 例えば、E1からE6のなかで、E5が最大値だったばあいは、X5のセルをA1のセルに参照されるようにしたいと考えています。 申し訳ございませんが、ご教示のほどよろしくお願いいたします。

  • 【EXCEL】指定したセルの値を他セルに代入する

    EXCELにおいて、 あるセルD1で記入したアルファベットX(列指定情報) あるセルE1に記入した数字Y、(行指定情報) において、 あるセルF1=X行Y列のセルの値 というふうにするにはどのようにすればよろしいでしょうか? よろしくお願いいたします。 以下は例です ---------------------------- # A B C D E F 1 12 ## A 3 34 2 23 3 34 4 54 5 89 ----------------------------

  • 値の抽出

    Excelでマクロを使って値の抽出をしたいのですが、自分ではうまくいきません。どうかお力をお貸し下さい。 A1セル:品番 A2セル:DDH0020 A3セル:DDH0030 A4セル:DDH0040 A5セル:DDH0050 … A30セル:DDH0150 B1セル:品名 B2セル:ゴウハン 13*20.0X 56X807 U B3セル:ゴウハン 13 20.0X 56X845 U B4セル:ゴウハン 13 20.0X 85X1257 U B5セル:ゴウハン 13 20.0X 56X1280 U … B30セル:ゴウハン 13*20.0X 232X1897 U このような形で30行目まであります。 この内のB列の数字部分(2行目であれば)、20と56と807を抜き出し C2セル:20,D2セル:56,E2セル:807 (3行目であれば) C3セル:20,D3セル:56,E3セル:845 (4行目であれば) C4セル:20,D4セル:85,E4セル:1257 と表示させたいのです。 ご面倒おかけしますが、どうかご回答をお願いします。

  • 【Excel】2つの値のどちらかを抽出する

    A、Bのセルがあり、どちらのセルにも文字列が入っていたり、入っていなかったりとします。 そこでセルCに、A、Bどちらかの文字列を入れたいと考えたとき、どのような関数が考えられますでしょうか? 条件は以下のようにします。 (1)A,Bとも文字列か、空白のどちらか (2)Aの方が優先される。A,Bのどちらも値が入っている場合はA、Aが空白で、Bに値が入っている場合はBの値がCに反映される。 宜しくお願い致します。

  • Excel2000で他のブックの値を参照する

    Excel2000で、他のブックからセルの値を参照する際に, #VALUE!になってしまうのはどういう場合でしょうか。 新規で作ったブックでは正常に参照できるのですが, 既にあるブック同士で片方からもう片方のセルを参照しようとすると #VALUE!になってしまいます。 参照の方法ではなく,こうなってしまう要因と対策方法を お教えいただきますよう,お願い致します。

  • 2つのセルに入力された異なる数値同士を比較して、もっとも近い値のある行

    2つのセルに入力された異なる数値同士を比較して、もっとも近い値のある行を検索する。 EXCELに関して表題の件で皆様の助言を何卒よろしくお願いします。 以下のようなサンプルがあるとします。 【A表】 #     x      y 1     13     712 2     22     1277 3     22     1559 4     22     2158 5     30     692 6     33     2294 7     34     1205 8     36     177 9     40     1851 10     52     762 ・ ・ ・ ・ これに対しての検索するデータが以下です。 【B表】 2#     2X      2Y 2     17.38    421.735 3     29.504   419.711 4     12.254   419.922 5     32.509   417.048 6     32.412   415.276 7     32.131   413.79 8     28.439   416.012 9     28.105   172.226 10    38.55    262.927 13    58.727   10.303 14    50.327   11.811 15    35.978   104.821 ・ ・ ・ ・ A表とB表のそれぞれ 【x ⇔ 2x】 【y ⇔ 2y】 の部分と比較し もっとも近い値から上位3つくらいまで一致したA表の行を抽出するための 関数、マクロを作成したいと思っていまして、過去ログ等調べて 色々試してみましたがなかなかうまくいきません。 【x 、 y】と【2x 、 2y】はそれぞれ同じ行同士の物で検索しなければならないというのが ネックになっているのでしょうか? あとA表、B表の総項目数は一致していません。 もっとも近い値を検索し、その行の【#】の数値を抽出するという関数は 過去ログから検索して作成することは出来たのですが、 2番目、3番目に近い値を検索し、#の数値を抽出することが出来ません。 言葉足らずで理解に苦しむかと思われますが、何卒皆様のご助力を よろしくお願い致します。 ※本文では分かり辛いので画像添付しました。ご参照下さい。

  • vlookupのセル参照

    vlookupで値を持ってきたあと、 参照してるデータのどのセルを見てるのか 知りたいのですが、そのような方法は 無いですか?? どなたかご存じの方いらっしゃいましたら 教えてください。 よろしくお願いいたします。

  • エクセルで、あるセルに入力されたらこのセルを参照する…

    B1セルに値が入力されたら、A1セルがC1セル(データ入力済)の値を参照する、 ような数式を教えてください. またこのような数式がたくさんあるサイトでオススメを教えてください.

  • ExcelVBA:オートフィルタをかけたシート上でのセル内の値参照について

    オートフィルタをかけた状態で、セル内の値を参照しても、オートフィルタがかかってないセル(隠れているセル)の値を参照してしまいます。 例えば、ある条件でオートフィルタをかけて、行が1,2、6,7、8・・・となって、3,4,5行が非表示になっているのにもかかわらず、 Range("A1").Offset(0, 2).Value を参照すると、6行目の値ではなくて、非表示の3行目の値を拾ってきてしまいます。 このように、オートフィルタをかけたシート上で値を参照する際に、非表示行を無視して行数取りし、値を参照したいのですが、何か方法はありますでしょうか? 上の例ですと、6行目のセルを3行目として扱いたいわけです。 どなたか、ご教授くださいませ。 よろしくお願い致します。

専門家に質問してみよう