31. august 2007 - 11:23Der er
10 kommentarer og 2 løsninger
Kopier et Array til et andet under betingelse
Hej er der nogen eksperter der kan give mig et bud på en VBA kode hvor jeg kopier et array til et nyt array såfremt en given betingelse er opfyldt på data, som ligger i det første array?
Fx. Array 1 indeholder Items og pris. Array 2 indeholder kun de Items hvis pris er = 500.
Du har data i A4 til B7, og vil gerne have de valgte over i D4 og videre.
Dine data starter så I A4 og til B7
Lav overskrifter på kolonnerne I A3 og B3
Lav Samme overskrift i C1 som du har i B3
I D3og E3, de samme overskrifter som i A3 og B3
sæt denne kode ind i arkets modul
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$2" Then ' Ret ("A3:B7") til det område du har data i, incl. overskrifter Range("A3:B7").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "C1:C2"), CopyToRange:=Range("D3:E3"), Unique:=False End If End Sub
skriv så den værdi du vil have i C2, så skulle de komme over i D og E kolonnen
Kabbak jeg påskønner din hjælp, men jeg kan ikke få det til at virke. Jeg forstår ikke helt hvorfor du skriver at jeg ikke kan bruge avanceret filter - gør jeg det? I din kode forstår jeg hellere hvad er (ByVal Target As Range) gør. Jeg er rimmelig grøn :).
Fortæller kun at jeg ønsker at placer indholdet FRA Range D4 - jeg resize 'er altså det range hvor jeg vil placere mit array! Men se koden nedenfor:
Hermed lukker jeg.
'...Define size of destination array - because you can resize only the last array dimension!!! For iSourceD1 = 1 To iSourceUBoundD1 If vSourceArray(iSourceD1, 3) = CapGrp Then iDestinationUBoundD2 = iDestinationUBoundD2 + 1 End If Next ReDim vDestinationArray(iDestinationUBoundD2, iSourceUBoundD2)
iDestinationD1 = 1 For iSourceD1 = 1 To iSourceUBoundD1 '...If a match then begin to load into the new array If vSourceArray(iSourceD1, 3) = CapGrp Then
For iSourceD2 = 1 To iSourceUBoundD2 vDestinationArray(iDestinationD1, iSourceD2) = vSourceArray(iSourceD1, iSourceD2) Next
Det kan man ikke - som jeg nævner under starten af 15:56:23 - det er range 'et der bliver tilpasset - ikke array 'et! :)
Lukker
Synes godt om
Ny brugerNybegynder
Din løsning...
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.