アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelである点に一番近い座標を求めたいのですが

今A列のx座標、B列のy座標で表される点(A1,B1)に距離が一番近い点を
C列のx座標、D列のy座標で表される点の集合(C1,D1)~(C1000,D1000)のなかから探して
(Cn,Dn)の値をE1、F1に表示させたいのですがどのようにすれば良いか教えてください。

引き続き(A2,B2)に近い点を(C1,D1)~(C1000,D1000)の中から探してE2,F2に表示するつもりです。
それを1000まで繰り返します。

比較する数が多すぎるため私の力ではどうにもなりません。すいませんがご協力お願いいたします。

A 回答 (2件)

(A1,B1)を処理して離れた(E1,F1)に答が出てくるのは見づらくて嫌


なので、あなたの「点の集合(C1,D1)~(C1000,D1000)」はF列とG列
に引っ越してもらいます。(A1,B1)に対応する点は(C1,D1)にだしま
しょう。

座標(A1,B1)と、座標の配列(F1:F1000,G1:G1000)の各要素までの距
離の二乗は、index((A1-$F$1:$F$1000)^2+(B1-$G$1:$G$1000)^2,0)
という配列で表せます。この配列の中から最小値が何番目にあるの
かを見つけて、元の配列(F1:F1000,G1:G1000)から該当する順番の
座標を取り出せばいいわけですね。

最小値はmin関数、何番目にあるのかを見つけるのはmatch関数、配
列から該当する順番のものを取り出すのはindex関数なので、C1は
=index(F$1:F$1000,match(min(index(($A1-$F$1:$F$1000)^2+($B1-
$G$1:$G$1000)^2,0)),index(($A1-$F$1:$F$1000)^2+($B1-$G$1:$G
$1000)^2,0),0))
という感じになるはず。D1はドラッグするだけ。座標が増えたら下
にドラッグしてください。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。
丁寧なアドバイス助かります。
早速使わせていただきます。

お礼日時:2010/07/07 04:57

E1に


=INDEX(C:C,MIN(IF(($A1-$C$1:$C$1000)^2+($B1-$D$1:$D$1000)^2=MIN(($A1-$C$1:$C$1000)^2+($B1-$D$1:$D$1000)^2),ROW($C$1:$C$1000))))
と記入してコントロールキーとシフトキーを押しながらEnterして入力
右のF1にコピー
下にコピー。
    • good
    • 1
この回答へのお礼

ご回答いただきありがとうございます。
早速使わせていただきます。

お礼日時:2010/07/07 04:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています