先回答
這是我的第一個答案。我沒有仔細閱讀過你的問題,也沒有注意到你想要每欄最少。我已經離開了這個答案,因爲它可能仍然有價值。
一些工作表函數在數組上工作。嘗試下面的代碼。
原文爲Test2的最小值爲1,並且程序發現兩個不同位置該值。我從數組中刪除了1,並在最後添加了51。然後例程發現2
我沒有超時這個程序,但我會感到驚訝,如果不是比VBA快。
Option Explicit
Sub Try()
Dim InxT11 As Long
Dim InxT12 As Long
Dim InxT2 As Long
Dim Test1(1 To 10, 1 To 5) As Long
Dim Test2() As Variant
Test2 = Array(5, 20, 27, 30, 45, 50, 4, 15, 32, 33, 47, 49, 3, 11, 12, _
21, 34, 40, 2, 10, 13, 18, 19, 24, 25, 26, 36, 42, 43, 44, _
6, 7, 17, 31, 39, 41, 8, 9, 14, 16, 22, 23, 28, 29, 35, 37, _
38, 46, 48, 51)
InxT2 = LBound(Test2)
For InxT11 = LBound(Test1, 1) To UBound(Test1, 1)
For InxT12 = LBound(Test1, 2) To UBound(Test1, 2)
Test1(InxT11, InxT12) = Test2(InxT2)
InxT2 = InxT2 + 1
Next
Next
Debug.Print WorksheetFunction.Min(Test1)
End Sub
第二應答
該答案我已經使用一個粗糙的或鋸齒狀的陣列。使用不規則數組,每行可以有不同數量的列。我所有的行都是相同的長度,但它們可能是不同的長度,對代碼沒有重大改變。
我已經定義Test
作爲固定大小變體陣列。它可以很容易地變得動態。
變體或變體數組的元素可以是數組。我已將Test
的每個元素設置爲五元素數組。
環路顯示最小的每一行的作爲字符串:5 4 3 2 13 26 6 8 22 37
您要求的最小每列,但我不能認爲性的方法(除其它的VBA循環)可以實現這一點。如果你喜歡這種方法,你將不得不使列成爲第一維,而成爲第二維。
注意:訪問不齊整數組元素的語法是不同的。它是:
Debug.Print Test(InxD1)(InxD2)
希望這會有所幫助。
Option Explicit
Sub Try2()
Dim InxT As Long
Dim Test(1 To 10) As Variant
Test(1) = Array(5, 20, 27, 30, 45)
Test(2) = Array(50, 4, 15, 32, 33)
Test(3) = Array(47, 49, 3, 11, 12)
Test(4) = Array(21, 34, 40, 2, 10)
Test(5) = Array(13, 18, 19, 24, 25)
Test(6) = Array(26, 36, 42, 43, 44)
Test(7) = Array(6, 7, 17, 31, 39)
Test(8) = Array(41, 8, 9, 14, 16)
Test(9) = Array(22, 23, 28, 29, 35)
Test(10) = Array(37, 38, 46, 48, 51)
For InxT = LBound(Test) To UBound(Test)
Debug.Print WorksheetFunction.Min(Test(InxT)) & " ";
Next
Debug.Print
Debug.Print Test(1)(2)
End Sub
爲了得到更好的幫助,你應該解釋[你嘗試了什麼](http://whathaveyoutried.com)和你被卡住的地方,例如通過顯示不能按預期工作的代碼。 – assylias 2012-08-04 08:22:25
'我的矩陣不顯示在電子表格中 - 這是什麼意思?即使單元格被隱藏,「Cells」屬性也可以訪問每個工作表上的每個單元格。 '我想將包含最小值的單元格旁邊的單元格替換爲空白。'我們需要查看樣例輸入和預期輸出。 – JimmyPena 2012-08-04 11:17:35
您是否嘗試過使用'Application.Min(c)' - 是否有效? – 2012-08-05 18:56:48