
VBAでユークリッド距離を用いて1番近い物を表示
表 裏
縦 横 高さ 縦 横 高さ
名前
1 45 30 15 15 20 35
2 15 25 45 35 15 25
3 25 15 15 25 25 15
4 45 35 30 14 27 35
5 14 25 25 14 35 25
上記のようなExcelに名前ごとに寸法が記載されている。5の寸法と近いものをユークリッド距離を用いて表示させたい。
表示は表、裏別、近い順番(上位5個までとか)で上から表示させたいです。
伝わりにくいかも知れませんが
VBA初心者なので詳しい方、ご教示いただきたく。
よろしくお願い致します。
No.9ベストアンサー
- 回答日時:
こちらに投稿するとエラーになるので
下記URLにアップしました。
以下のマクロを標準モジュールに登録してください。
https://ideone.com/04Dvyp
Const BA1 As Long = 1000 '表縦の倍率
は、あなたの環境にあわせて適切に設定してください。
(BA2-BA6も同様)
No.8
- 回答日時:
最終確認です。
元データのレイアウトは、私がNo7で提示した画像で間違いないでしょうか。
(但し、I3には名前を入力しないので、I列は全て空白とする)
元データのシート名は、Sheet1とする。
結果を表示するレイアウトは、あなたが、補足日時:2022/10/24 16:18
で補足した画像とする。
マクロは、B1に設定された名前を読み込み、その名前を基準として、
距離を算出し、5行目以降に設定する。
(マクロが設定するのは5行目以降とし、最大5件まで表示する)
結果を表示するシート名はSheet2とする。
上記の仕様で間違いないでしょうか。
(シート名を変えたい場合も含め、問題があれば、その旨補足してください)
No.7
- 回答日時:
もとの表ですが、この画像でレイアウトはあってますか?
異なる場合は、画像で提示してください。
基準となる名前ですが、I3のセルに記述することを想定しています。(黄色のセル)
(都合が悪ければ他のセルを指定してください)
これから出かけます。返信は夜になります。

No.6
- 回答日時:
>画像なんか黒くなってのせれませんでした。
アクセサリにsnipping toolがあります。それを利用されてはいかがでしょうか。私の提示した画像はsnipping toolを使ってます。
No.4
- 回答日時:
>表示は表、裏別、近い順番(上位5個までとか)で上から表示させたいです。
結果の表示はどのようなレイアウトを望んでますか。
添付図のような例を提示していただけるとありがたいです。
左側の画像は、表同士の差と裏同士の差を合計した値を小さい順に並べています。(距離の計算はでたらめです)
右側の画像は、表同士の差を小さい順にならべ、また、裏同士の差を小さい順に並べています。(距離の計算はでたらめです)
名前5は、基準なので距離は0になります。
(基準の名前を表に入れるのか、入れないのかが不明なのでとりあえず入れてあります)

No.3
- 回答日時:
>表と裏は別々で計算を行いたいです。
>表は表の縦、横、高さ。
>裏は裏の縦、横、高さで計算し、
というのは、わかるのですが、
名前の距離は表と裏があるので、
表同士の距離と裏同士の距離の和が、その名前の距離となるのでしょうか。
表同士の距離=(((1の縦-5の縦)^2✳︎倍率)+((1の横-5の横)^2✳︎倍率)+((1の高さ-5の高さ)^2✳︎倍率)
裏同士の距離=(((1の縦-5の縦)^2✳︎倍率)+((1の横-5の横)^2✳︎倍率)+((1の高さ-5の高さ)^2✳︎倍率)
1と5の距離=表同士の距離+裏同士の距離
であってますか。
一般例:xと5の距離を求め、それを小さい順に表示する。(x=1,2,3,4)
比較元の名前(今回の例では5)ですが
名前(A列)の最下行が比較元の名前と考えて良いですか。
それとも、途中の行の名前を比較元に使う場合もありますか。
その場合は、どこかでその名前を指定する必要があります。
No.2
- 回答日時:
補足ありがとうございました。
提示例では1の表と5の表の距離になっていますが、
裏はどうなるのでしょうか。
X=1の表と5の表の距離+1の裏と5の裏の距離
を計算し、Xを1と5の距離とすれば、良いのですか。
1000,100とかの倍率は、縦、横、高さで異なりますが、表と裏でも異なりますか。(表の縦=1000、裏の縦=100のようなこともあり得ますか)
No.1
- 回答日時:
ユークリッド距離の求め方が判りません。
例えば、手作業で1のユークリッド距離を求める場合は、どのように計算すれば良いのでしょうか。
ユークリッド距離の求め方を提示していただければ、それをVBAで作成することは可能です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- その他(ブラウザ) webサイトに表示する画像の向きを変える(左右に回す)方法 3 2023/01/20 08:28
- Excel(エクセル) エクセルで対象日に該当するデータがある場合に別表へ全対象者を表示させたい。 3 2023/07/12 09:48
- その他(IT・Webサービス) googleカレンダーについて質問です スマホ版を使っています 週表示で使用してますが 1、デフォル 1 2023/02/26 20:35
- Word(ワード) Word2013 縦書き上下二段の表、改行を続けると次ページに情報が表示されるようにしたい 3 2022/06/16 09:24
- Visual Basic(VBA) ChatGPTに作らせたい Excel VBA 1 2023/04/05 19:56
- その他(動画サービス) VLCメディアプレーヤーについて 1 2022/11/29 14:19
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) VBAリストボックスで選択した後 5 2022/11/07 17:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JW CADの寸法の文字が消せない
-
JWWの寸法線の文字の移動
-
CPUクーラーの取り付け穴のピッ...
-
acadで両方矢印の作図方法
-
直径を入力するときの矢印は内...
-
図面を描くときのルールについて
-
電子部品の寸法図の読み方を教...
-
図面にたくさんある穴の綺麗な...
-
φ(直径記号)つく? つかない?
-
JW CADで文字や、寸法線が消せ...
-
AutoCADでの寸法値の切捨てにつ...
-
AutoCADの寸法の色を一発で変え...
-
AutoCad 寸法スタイルを違った...
-
ソリッドワークス 図面寸法 ...
-
寸法図にあるPLCSとはどういう...
-
AutoCAD 2002 Mechanicalの寸法...
-
【AUTO CAD】 エクセルみたいに...
-
三菱ふそう社の大型車のCAD...
-
AutoCADLT2000で寸法数値を...
-
AUTO CAD→jw_cadへdxf変換した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JW CADの寸法の文字が消せない
-
AUTO CAD→jw_cadへdxf変換した...
-
AutoCADでの寸法値の切捨てにつ...
-
JWWの寸法線の文字の移動
-
AutoCAD寸法(公差・許容差)に...
-
スクリューコンベアの計算
-
直径を入力するときの矢印は内...
-
IGES(3D)又はSTEPが閲覧が出来...
-
電子部品の寸法図の読み方を教...
-
図面を描くときのルールについて
-
寸法図にあるPLCSとはどういう...
-
絶縁被覆付閉端接続子で CE型...
-
AutoCADで寸法の文字サイズが小...
-
ガステーブルのサイズ(奥行き)...
-
風呂用換気扇(SEIDENKO)の取...
-
JW_CAD初心者です。線が引...
-
AutoCADの寸法の色を一発で変え...
-
JW CADで文字や、寸法線が消せ...
-
AutoCADの「Defpoint」という画層
-
AutoCADで斜めに引いた線分の寸...
おすすめ情報
結果は別のExcelまたは、シートに表示させたいです。
名前の所はどんどん増えて行きますので、名前を入力したらそこの計算をするような感じにしたいです。
説明足らず申し訳ございません。
ユークリッド距離計算方法
1と5での計算式になります。
倍率は重要な所だと数値を変えるイメージ。
(1000とか100とか)
=(((45-14)^2✳︎1000)+((30-25)^2✳︎100)+((15-25)^2✳︎100)
=(((1の縦-5の縦)^2✳︎倍率)+((1の横-5の横)^2✳︎倍率)+((1の高さ-5の高さ)^2✳︎倍率)
表と裏は別々で計算を行いたいです。
表は表の縦、横、高さ。
裏は裏の縦、横、高さで計算し、
今回は5に近いのを見つけるような例にしましたが3と近いのを見つけたり、名前の所は今後も増えていきますのでそこも考慮したVBAを作りたいです。
5と3を計算する場合は
(1の所が3の寸法になる感じになります)
=(((1の縦-5の縦)^2✳︎倍率)+((1の横-5の横)^2✳︎倍率)+((1の高さ-5の高さ)^2✳︎倍率)
倍率は表裏でも異なります。書いて頂きました例もありえます。
>表同士の距離と裏同士の距離の和が、その名前の距離>となるのでしょうか。
距離は和の計算はしなくても大丈夫です。表は表、裏は裏の距離を表示させたいです。
>比較元の名前(今回の例では5)ですが
>名前(A列)の最下行が比較元の名前と考えて良いで> すか。
>それとも、途中の行の名前を比較元に使う場合もあり>ますか。
>その場合は、どこかでその名前を指定する必要があり>ます。
途中の名前を比較元になる場合もありますので、名前(A列)の指定をして、それとの比較を行えるような感じにしたいです。
右側のような感じでお願いいたします。
比較元は表には入れずに、図のような感じにどこかに表示させたいです。
このような感じでお願いいたします。
画像なんか黒くなってのせれませんでした。
ご提示頂きました例の図とほぼ変わりませんが
このような感じでお願い致します。
基準となる名前はB1セルに入れていただければと思います。