26. oktober 2014 - 20:04Der er
4 kommentarer og 1 løsning
VBA - Lave liste med tal der står i specifik kolonne
Jeg har et ark med tal /kontonumre I kolonne A. I kolonne N har jeg nogle tal fra 1-50. Kolonnen er som oftest tom, men hvis jeg ønsker at flere kontonumre skal I same gruppe indtaster jeg et tal I kolonne N. Nu vil jeg meget gerne have en kode der løber igennem kolonne N og lister hvilke kontonumre der star i same gruppe. (Kontonr. Står I kolonne A)
Arket kan se således ud: Kol A Kol N 1000 1 1001 1002 1 1003 1 1004 2 1005 1 1006 2 1007 1008 2 1009 1010
Det jeg godt kunne tænke mig er at arket ser således ud defter koden er kørt
Kol A Kol N Kol Q 1000 1 1000, 1002,1003, 1005 1001 1002 1 1000, 1002,1003, 1005 1003 1 1000, 1002,1003, 1005 1004 2 1004, 1006, 1008 1005 1 1000, 1002,1003, 1005 1006 2 1004, 1006, 1008 1007 1008 2 1004, 1006, 1008 1009 1010
Public Sub FindKonto() Dim Data As Variant, Gruppe As Variant, UdData As Variant, X As Integer, I As Integer, V As String Data = Range([Ark1].[a2], [Ark1].[a2].End(xlDown)) Gruppe = Range([Ark1].[N2], [Ark1].Cells([Ark1].[a2].End(xlDown).Row, "N")) ReDim UdData(UBound(Data)) For I = 1 To UBound(Data) If IsEmpty(Gruppe(I, 1)) Then ' der er kun 1 i denne gruppe UdData(I) = Data(I, 1) Data(I, 1) = Empty End If Next
For I = 1 To UBound(Data) V = Data(I, 1)
For X = 1 To UBound(Data)
If Not IsEmpty(Data(I, 1)) Then If Gruppe(I, 1) = Gruppe(X, 1) Then UdData(X) = UdData(X) & V & "," End If End If Next X Data(I, 1) = Empty Next I [Ark1].[q2].Resize(UBound(UdData), 1) = Application.WorksheetFunction.Transpose(UdData) End Sub
Ark1 skal rettes til det navn der står til venstre for dit kaldte arknavn, hvis du har engelsk version, hedder det "Sheet" og så et tal. Du kan se det i kodemodulet
Kode:
Option Base 1 Public Sub FindKonto() Dim Data As Variant, Gruppe As Variant, UdData As Variant, X As Integer, I As Integer, V As String Data = [Ark1].Range([Ark1].[a2], [Ark1].[a2].End(xlDown)) Gruppe = [Ark1].Range([Ark1].[N2], [Ark1].Cells([Ark1].[a2].End(xlDown).Row, "N")) ReDim UdData(UBound(Data)) For I = 1 To UBound(Data) If IsEmpty(Gruppe(I, 1)) Then ' der er kun 1 i denne gruppe UdData(I) = Data(I, 1) Data(I, 1) = Empty End If Next
For I = 1 To UBound(Data) V = Data(I, 1)
For X = 1 To UBound(Data)
If Not IsEmpty(Data(I, 1)) Then If Gruppe(I, 1) = Gruppe(X, 1) Then UdData(X) = UdData(X) & V & "," End If End If Next X Data(I, 1) = Empty Next I [Ark1].[q2].Resize(UBound(UdData), 1) = Application.WorksheetFunction.Transpose(UdData) 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.