• 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.

gegevens ophalen verspreid over meerdere tabbladen

Status
Niet open voor verdere reacties.

KarindeK

Nieuwe gebruiker
Lid geworden
14 feb 2019
Berichten
3
Ik heb te weinig kennis van excel om de juiste woorden te gebruiken geloof ik, want ik heb volgens mij een hele simpele vraag maar ik vind het juiste antwoord niet. Wie kan mij helpen?

Ik heb een werkblad met meerdere tabbladen van bedrijven. in elk tabblad staan de namen en contactgegevens van de klanten van dat bedrijf, naast nog een hele berg andere gegevens.

Nu wil ik graag een overzicht van 1 klant, bij wie hij allemaal klant is (dus uit welk tabblad hij komt) en dan met namen en emailadressen van de contactpersonen. zie ook voorbeeld met fictieve klantgegevens.

Wat ik er nou uit zou willen krijgen, is dat ik voor klant 'Vierde' erachter kom bij wie die nou allemaal klant is, en wat daar dan over geregistreerd is. Ik wil dus voor elk Bedrijf de hele regel info van klant Vierde terug zien: naam, contactpersoon, email adres en telefoonnummer. En dat op een snelle manier, zodat ik dat ook voor de andere klanten zou kunnen trekken en kunnen bewerken.

maar ik heb echt geen idee hoe ik dat nou moet doen.

ik heb al zoeken/vervangen gedaan, dan krijg ik wel de lijst te zien maar daar kan ik vervolgens niets mee: niet kopieren, downloaden etc. alleen maar knippen, plakken en overtypen. Dat is wat teveel werk: ik moet dit voor 30 verschillende klanten doen in een werkblad met ruim 40 bedrijven.

vanwege de grote hoeveelheid werk leek het me ook niet zo fijn om per werkblad te filteren op klantnaam en dan die regels handmatig te kopieren naar een nieuw tabblad.

Dit moet toch anders kunnen?

groet,

Karin
 

Bijlagen

  • excelvraag-zoekenensamenvoegeninnieuwblad.xlsx
    15 KB · Weergaven: 28
Laatst bewerkt:
Dit zal met een macro niet zo heel moeilijk zijn maar ik zie overal hetzelfde en nergens wat de verwachte uitkomst is of hoe en waar je ergens wil zoeken. Dus graag iets meer informatie. Waarom is in elke tab de eerste rij leeg?
 
Dank je wel, een Macro kan ik vast wel uitzoeken.

de eerste regel is leeg om dat ik dat niet heb verwijderd, ik pas het aan.
en alle vier de bedrijven A,B, C en D hebben meerdere klanten, die soms hetzelfde zijn maar niet overal.
Bijvoorbeeld klantnaam "Vierde" is geregistreerd op tabblad Bedrijf A, B en D, maar niet bij bedrijf C. Klant 'Vierde' is daar dus geen klant.

Wat ik er nou uit zou willen krijgen, is dat ik voor klant 'Vierde' erachter kom bij wie die nou allemaal klant is, en wat daar dan over geregistreerd is. Ik wil dus voor elk Bedrijf de hele regel info van klant Vierde terug zien: naam, contactpersoon, email adres en telefoonnummer.
en dat op een snelle manier, zodat ik dat ook voor de andere klanten zou kunnen trekken en kunnen bewerken.

Ik zal de post aanpassen aan je vraag.

Dank!
 
Voeg een nieuw tabblad "Totaal" in en draai de code
Code:
Sub tsh()
    Dim Br, Bq
    Dim i As Long, j As Long
    Dim Sh
    Dim sKop As String, sRec As String
    
    sKop = "Naam klant|Contactpersoon|Mailadres|Telefoonnummer"
    With CreateObject("Scripting.Dictionary")
        ReDim Bq(Sheets.Count - 2)
        .Item(sKop) = Bq
        For Each Sh In ThisWorkbook.Sheets
            If Sh.Name <> "Totaal" Then
                j = j + 1
                Bq = .Item(sKop)
                Bq(j - 1) = Sh.Name
                .Item(sKop) = Bq
                Br = Sh.Cells(1).CurrentRegion
                For i = 2 To UBound(Br)
                    sRec = Br(i, 1) & "|" & Br(i, 2) & "|" & Br(i, 3) & "|" & Br(i, 4)
                    Bq = .Item(sRec)
                    If IsEmpty(Bq) Then ReDim Bq(ThisWorkbook.Sheets.Count - 2)
                    Bq(j - 1) = "x"
                    .Item(sRec) = Bq
                Next
            End If
        Next
        Set Sh = Sheets("Totaal")
        Sh.Cells(1, 1).Resize(.Count) = Application.Transpose(.Keys)
        Sh.Columns(1).TextToColumns , xlDelimited, , , , , , , 1, "|"
        Sh.Cells(1, 5).Resize(.Count, Sheets.Count - 1) = Application.Index(.Items, 0)
        Sh.Columns.AutoFit
    End With
End Sub
 
Laatst bewerkt:
Met ruim 40 bedrijven zou ik er eerst een 'platte' tabel van maken. Maakt de code net iets eenvoudiger dan de mooie oplossing van @Timshel:thumb:. Vanuit een 'platte' tabel kan je wat makkelijkere analyse's maken dan vanuit een getransponeerde tabel.
Dit soort macro's kan je niet zomaar even uitzoeken:d

Code:
Sub VenA()
  Set d = CreateObject("Scripting.Dictionary")
  d("Naam klant|Contactpersoon|Mailadres|Telefoonnummer|bedrijf") = ""
  For Each Sh In Sheets
    If Sh.Name <> "Totaal" Then
      ar = Sh.Cells(1).CurrentRegion
      For j = 2 To UBound(ar)
        c00 = ""
        For jj = 1 To UBound(ar, 2)
          c00 = c00 & ar(j, jj) & "|"
        Next jj
        d(c00 & Sh.Name) = ""
      Next j
    End If
  Next Sh
  With Sheets("Totaal")
    .Cells.Clear
    .Cells(1).Resize(d.Count) = Application.Transpose(d.keys)
    .Columns(1).TextToColumns , xlDelimited, , , , , , , 1, "|"
    .Columns.AutoFit
  End With
End Sub

Beide codes staan in de bijlage. Met een klik op 1 van de blauwe knoppen in het blad 'Totaal' zie je de verschillen.
 

Bijlagen

  • excelvraag-zoekenensamenvoegeninnieuwblad.xlsb
    25,9 KB · Weergaven: 29
Bedankt Timshel en VenA!
Met verbazing heb ik gekeken wat er gebeurt als ik de code van Timshel invoer - prachtig.
Jouw oplossing ga ik ook nog proberen VenA, ik heb geen idee wat ik doe maar het werkt wel;-)

Overigens kwam ik er ook achter dat er een klein probleempje zit in het werkblad, lang niet alle tabbladen zijn hetzelfde opgezet. Wat in het ene tabblad naam klant heet, staat op een andere als contractparty. Tja dan wordt het onmogelijk om dezelfde gegevens eruit te krijgen. ik ben dus eerst alle titels aan het aanpassen en doe dan nog een keer de code van Timshel. Ik kom er vast uit en overweeg me eens te verdiepen in die macro's;-)

groet!
 
Beide codes doen niets met kolomkoppen. Wel is het van belang dat per tab dezelfde gegevens in dezelfde kolom staan.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan