VBAの指示の内容
昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわかっておらず、勉強の為ご教示いただきたく。
一つ一つの指示が何をやっているのかご教示よろしくお願い致します。
Option Explicit
Public Sub ユークリッド距離順()
Const BA1 As Long = 1000 '表縦の倍率
Const BA2 As Long = 100 '表横の倍率
Const BA3 As Long = 10 '表高の倍率
Const BA4 As Long = 1000 '裏縦の倍率
Const BA5 As Long = 100 '裏横の倍率
Const BA6 As Long = 10 '裏高の倍率
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim dicT As Object
Dim maxrow1 As Long
Dim namerow As Long
Dim wrow As Long
Dim row2 As Long
Dim name As String
Dim d1 As Long, d2 As Long, d11 As Long, d12 As Long, d13 As Long, d21 As Long, d22 As Long, d23 As Long
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
maxrow1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row 'sheet1 最終行を求める
If maxrow1 < 4 Then Exit Sub
name = sh2.Range("B1").Value
If name = "" Then Exit Sub
sh2.Rows("5:" & Rows.Count).ClearContents '5行目以降クリア
namerow = 0
For wrow = 3 To maxrow1
If name = sh1.Cells(wrow, 1).Value Then
namerow = wrow
End If
Next
If namerow = 0 Then
MsgBox (name & "が存在しません")
Exit Sub
End If
'ユークリッド距離の計算
row2 = 5
For wrow = 3 To maxrow1
If wrow <> namerow Then
sh2.Cells(row2, 1).Value = sh1.Cells(wrow, 1).Value '表名前
sh2.Cells(row2, 4).Value = sh1.Cells(wrow, 1).Value '裏名前
d11 = (sh1.Cells(wrow, 2).Value - sh1.Cells(namerow, 2).Value)
d12 = (sh1.Cells(wrow, 3).Value - sh1.Cells(namerow, 3).Value)
d13 = (sh1.Cells(wrow, 4).Value - sh1.Cells(namerow, 4).Value)
d21 = (sh1.Cells(wrow, 5).Value - sh1.Cells(namerow, 5).Value)
d22 = (sh1.Cells(wrow, 6).Value - sh1.Cells(namerow, 6).Value)
d23 = (sh1.Cells(wrow, 7).Value - sh1.Cells(namerow, 7).Value)
d1 = d11 * d11 * BA1 + d12 * d12 * BA2 + d13 * d13 * BA3
d2 = d21 * d21 * BA4 + d22 * d22 * BA5 + d23 * d23 * BA6
sh2.Cells(row2, 2).Value = d1 '表距離
sh2.Cells(row2, 5).Value = d2 '裏距離
row2 = row2 + 1
End If
Next
'ソート
sh2.Range("A5:B" & row2 - 1).Sort key1:=sh2.Range("B5"), Order1:=xlAscending, Header:=xlNo
sh2.Range("D5:E" & row2 - 1).Sort key1:=sh2.Range("E5"), Order1:=xlAscending, Header:=xlNo
sh2.Rows("10:" & Rows.Count).ClearContents '10行目以降クリア
MsgBox ("完了")
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの差込印刷で可視セルだけ...
-
エクセルVBA 別シートの複数の...
-
シャープのアクオス sh-m25 を...
-
歯抜けの時間を埋めて行の挿入
-
VBA:同じ文字列データの比...
-
エクセルVBAで SendKeys "{TAB}"
-
VBAの処理が途中で止まる
-
エクセルVBAでの日付順のデ...
-
Excelマクロ データが上書きさ...
-
Excel VBA インデックスの境...
-
VBAで複数シート選択
-
excel:色付き文字の抽出と変換法
-
Excel VBA :2回目以降実行で貼...
-
Excel で行を指定回数だけコピ...
-
複数条件に一致したデータを月...
-
エコウォッシュシステムの値段...
-
EXCELマクロで全シート対...
-
ノートパソコン 2in1について i...
-
VBA 貼付先範囲(行)がいっぱ...
-
情報系の授業の課題なのですが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 別シートの複数の...
-
Excel で行を指定回数だけコピ...
-
Excel VBA インデックスの境...
-
excelの差込印刷で可視セルだけ...
-
VBA:同じ文字列データの比...
-
VBA別シートの最終行の下行へ貼...
-
エクセル:VBAで月変わりで、自...
-
エクセルVBAで 2種のリストを...
-
歯抜けの時間を埋めて行の挿入
-
エクセルVBAで SendKeys "{TAB}"
-
VBAで条件が一致する行のデータ...
-
EXCELマクロで全シート対...
-
VBAの指示の内容 昨日こちらで...
-
Excel VBAでシート内全体に非表...
-
VBAで複数シート選択
-
Excelマクロ データが上書きさ...
-
Excel VBA 時刻でのD...
-
VBA 貼付先範囲(行)がいっぱ...
-
エクセルVBAでの日付順のデ...
-
【WORD差し込み印刷】複数レコ...
おすすめ情報