返回列表 上一主題 發帖

[發問] 請問如何使用VBA計算方陣

本帖最後由 lpk187 於 2015-7-28 20:43 編輯

回復 1# linlin00

我利用上次的程式來完成它!
也就是原來的A、B、C 3欄的原有資料來完成
  1. Public Sub Ex()
  2. s = 2
  3. k = 11
  4. For i = 2 To 6
  5.     X = i + 1
  6.     For j = X To 7
  7.         Cells(s, "F") = Cells(i, 1) & "," & Cells(j, 1)
  8.         Cells(s, "G") = (Cells(i, 2) + Cells(j, 2)) / 2
  9.         Cells(s, "H") = (Cells(i, 3) + Cells(j, 3)) / 2
  10.         Cells(j, k) = (Cells(i, 2) - Cells(s, "G")) ^ 2 _
  11.                          + (Cells(j, 2) - Cells(s, "G")) ^ 2 _
  12.                          + (Cells(i, 3) - Cells(s, "h")) ^ 2 _
  13.                          + (Cells(j, 3) - Cells(s, "h")) ^ 2
  14.         s = s + 1
  15.     Next
  16.     k = k + 1
  17. Next
  18. End Sub
複製代碼

TOP

本帖最後由 lpk187 於 2015-7-29 01:18 編輯

回復 3# linlin00

K值為什麼要11如下圖
K值為Column數,從K欄開始計數所以為11,L欄為12,依此類推!
   

以此例題,其實有很多方式可以做,但我選擇最基礎的一種方式,讓你容易理解,這方式如果資料很多的時候,其實速度會有些慢的!

TOP

回復 6# linlin00

不知是不是你想要的
其實只是把它以陣列的方式去跑(陣列比在儲存格跑快很多)
  1. Public Sub Ex1()
  2. Dim ar1(), ar2()
  3. n = 1
  4. arr = Range("a2:c" & Cells(Rows.Count, 1).End(xlUp).Row) '當ABC三欄往下增加資料時會自動讀取位置
  5. ReDim ar2(1 To UBound(arr) + 1, 1 To UBound(arr) + 1)
  6. ar2(1, 2) = 1
  7. For i = 1 To UBound(arr) - 1
  8.     ar2(1, i + 2) = i + 1
  9.     X = i + 1
  10.     For j = X To UBound(arr)
  11.         ReDim Preserve ar1(1 To 3, 1 To n)
  12.         ar1(1, n) = arr(i, 1) & "," & arr(j, 1)
  13.         ar1(2, n) = (arr(i, 2) + arr(j, 2)) / 2
  14.         ar1(3, n) = (arr(i, 3) + arr(j, 3)) / 2
  15.         ar2(j, 1) = j - 1
  16.         ar2(j + 1, i + 1) = (arr(i, 2) - ar1(2, n)) ^ 2 _
  17.                       + (arr(j, 2) - ar1(2, n)) ^ 2 _
  18.                       + (arr(i, 3) - ar1(3, n)) ^ 2 _
  19.                       + (arr(j, 3) - ar1(3, n)) ^ 2
  20.         n = n + 1
  21.     Next
  22. Next
  23. ar2(j, 1) = i
  24. Range("F2").Resize(UBound(ar1, 2), UBound(ar1, 1)) = Application.Transpose(ar1)
  25. Range("J1").Resize(UBound(ar2, 2), UBound(ar2, 1)) = ar2
  26. End Sub
複製代碼

TOP

回復 10# linlin00


   不好意思!不是很懂你的意思。我對算數方面不是很熟!如果有公式或結果,倒可以試一下!

TOP

回復 13# linlin00

不好意思!還是不懂!可能要請其他大大出手相助了

TOP

        靜思自在 : 並非有錢魷是快樂,問心無愧心最安。
返回列表 上一主題