• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro gefilterde kolom kopieren naar volgend tabblad met extras

Status
Niet open voor verdere reacties.

dvollebregt

Nieuwe gebruiker
Lid geworden
5 mrt 2013
Berichten
2
Ha Forumleden!

Ik heb een vraag die ik niet direct in eerdere berichten kon terugvinden.

Ik wil vanuit een database een selectie kopieren naar het volgende tabblad en daarbij een aantal zaken meenemen.
Ik wil dat de macro onderaan de lijst doorgaat naar de volgende benoemde kolom. Liefst door te zeggen dat de macro een paar rijen moet opschuiven.
Ook wil ik een id nummer naast de selectie laten verschijnen en het totaal laten doornummeren.

Ik heb geprobeerd een macro op te nemen maar ik blijf hangen op het feit dat ze onder elkaar door moeten lopen. Daarnaast lukt het me niet op het id mee te nemen.

In de bijlage geef ik de handeling aan die ik uit wil voeren met een macro. In blad1 zie je de startpositie en blad2 de eindpositie.

Jullie zouden me heel erg helpen het is een database van 300 x 5000 regels :)

Alvast dank!

Bekijk bijlage test macro filteren lijst en kopieren.xlsm
 
Laatst bewerkt:
Ik heb inmiddels de volgende code gebouwd. Nu wil ik ook gebruiken voor een dezelfde opstelling maar dan met tekst ipv cijfers. Hoe zou ik dat moeten doen?


Code:
Sub DoIt()
    Dim xlWsOut As Worksheet
    Dim dic As Object: Set dic = CreateObject("Scripting.Dictionary")
    Dim aData, aDataOut, vKey
    Dim id
    Dim i As Long, j As Long, nrCount As Long
    
    Application.ScreenUpdating = False
    
    Set xlWsOut = ThisWorkbook.Worksheets(2)
    
    aData = Application.WorksheetFunction.Transpose(ActiveSheet.UsedRange.Value2)

    For i = LBound(aData, 1) To UBound(aData, 1)
        If Not IsEmpty(aData(i, 2)) Then
            If Not IsEmpty(aData(i, 1)) Then
                id = aData(i, 1)
            End If
            For j = 2 To UBound(aData, 2)
                If IsNumeric(aData(i, j)) And aData(i, j) > 0 Then
                    nrCount = nrCount + 1
                    dic.Item(nrCount) = Array(nrCount, id, aData(i, j))
                End If
            Next j
        End If
    Next i
    
    ReDim aDataOut(1 To dic.Count, 1 To 3)
    i = 1
    For Each vKey In dic.Keys
        For j = 0 To 2
            aDataOut(i, j + 1) = dic.Item(vKey)(j)
        Next j
        i = i + 1
    Next vKey
    
    With xlWsOut
        .Range("A1:C1").Value2 = Array("NR", "ID", "T en C")
        .Range(.Cells(2, 1), .Cells(UBound(aDataOut, 1) + 1, 3)).Value2 = aDataOut
    End With
    
    xlWsOut.Activate
    
    MsgBox "Done.", vbInformation + vbOKOnly, "Done."
    
    Application.ScreenUpdating = True
    
End Sub[CODE]
[/CODE]
 
Gebruik autofilter.
En zoek daarop eerst eens in dit forum: tig resultaten.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan