13. september 2016 - 00:06Der er
5 kommentarer og 1 løsning
Sorter i array med offset
Med en makro skal jeg kopiere rækker i et range ud fra et søgekriterie i rækken ovenover.
Jeg indlæser data til et array, og de rækker jeg efterfølgende skal bruge, bliver sorteret ud fra søgekriterier i flere af kolonnerne. Det virker fint, når søgekriterierne er i samme række. Men nu er jeg stødt på det problem, at jeg skal udvide søgekriteriet, til at omfatte værdien der er i rækken lige ovenover.
Altså i selve arrayet, skal der både søges i selve rækken, og i en kolonne skal der søges efter en bestemt celleværdi i rækken lige ovenover. Hvordan gør man det?
Jeg har prøvet med at sætte Offset ind som i nedenstående eksemplet, men der kommer en fejl. Der skal søges efter celleværdien Gul i kolonne 5 og celleværdien 222 i kolonne 6, men i rækken lige op over.
Uddrag af makro: If MyArray(x, 5) = "gul" And MyArray(x, 6).Offset(-1, 0) = "222" Then For y = LBound(MyArray, 2) To UBound(MyArray, 2) NewArray(K, y) = MyArray(x, y) Next K = K + 1 End If Next
Er der nogen der har et godt bud på, hvordan man skriver det ind i makroen?
Jeg er i tvivl om, hvordan jeg sætter løkken til at starte i 2. række i arrayet?
Hele makroen: Public Sub TestArrayOffset()
Dim MyArray As Variant Dim NewArray As Variant Dim x As Integer Dim y As Integer Dim K As Integer
MyArray = Sheets("Ark1").Range("A1:F27") K = 1 ReDim NewArray(1 To UBound(MyArray, 1), 1 To UBound(MyArray, 2)) For x = LBound(MyArray, 1) To UBound(MyArray, 1)
If MyArray(x, 5) = "gul" And MyArray(x, 6) = "222" Then For y = LBound(MyArray, 2) To UBound(MyArray, 2) NewArray(K, y) = MyArray(x, y) Next K = K + 1 End If Next
Range("H1").Resize(UBound(NewArray, 1), UBound(NewArray, 2)) = NewArray Erase NewArray End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.