Minsta o största värdet i 2D-arrayer


Här i detta tips demonstreras en teknik för att erhålla det minsta respektive det största värdet i en två-dimensionell array.

Exemplet kan uppfattas som att LBound(lnData) respektive UBound(lnData) ger det minsta och det största värdet. Detta är inte korrekt.

För en-dimensionella arrayer kan följande lösning användas:

lnMin = Application.WorksheetFunction.Min(lnData)

lnMax = Application.WorksheetFunction.Max(lnData)

 

Om ett felmeddelande erhålls vid kopiering till VBA-modul så läs mer här»
 

 

(© 2002 - 2003 All rights Colo - Used by permission)

Option Explicit

Option Base 1  

Sub Min_Max_Varden_Array()

   '© 2003 Alla rättigheter XL-Dennis

   Dim lnData(1 To 5, 1 To 5) As Long

   Dim i As Long, j As Long, x As Long

   Dim lnMax As Long, lnMin As Long

 

   x = 2

   For j = 1 To 2

      For i = 1 To 5

         If i = 2 Then x = x + 1

         lnData(i, j) = x * j

      Next i

   Next j

 

   'Startvärden för jämförelsen.

   lnMin = lnData(1, 1)

   lnMax = lnData(1, 1)

 

   'Här jämförs värdena och min- och maxvärdet identifieras.

   For j = 1 To 2

      For i = LBound(lnData) To UBound(lnData)

         lnMin = IIf(lnData(i, j) > lnMin, lnMin, lnData(i, j))

         lnMax = IIf(lnData(i, j) > lnMax, lnData(i, j), lnMax)

      Next i

   Next j  

   MsgBox lnMin & " " & lnMax  

End Sub