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

2 excel databases samenvoegen

Status
Niet open voor verdere reacties.

harrypotter12

Nieuwe gebruiker
Lid geworden
2 nov 2012
Berichten
3
Ik wil 2 excel databases samenvoegen op basis van de eerste kolom van beide werkbladen (genaamd ticker). Om het lastig te maken hebben sommige tickers een iets andere naam in het andere werkblad (bijv. Alza Corp is "AZA" in het ene werkblad en "AZA.1" in het andere werkblad, deze moeten dus samengevoegd worden ). Om het nog lastiger te maken, hebben de werkbladen een verschillend aantal rijen en staan sommige bedrijven wel in de ene database en niet in de andere (ik heb een klein deel van de totale databases in het bestand geplakt).
de kolommen 'firm_id' en 'numblks' van blad 1 moeten dus naast de kolom 'Gind' komen bij de juiste bedrijven bij het juiste jaar, zoals ik dat handmatig al voor ALZA CORP al gedaan heb in sheet 3.

Wie oh wie kan mij helpen? Ik zit hier al 2 dagen mee te prutsen, maar kan het licht maar niet vinden..
 

Bijlagen

@adbecude

In de helpmij-forumregels staat het misschien dan niet vermeld, maar het zou netjes en gewenst zijn, dat de topic starter zou vermelden dat de vraag ook op een ander forum is gesteld.

Waarschijnlijk is dit ook de boodschap van ExcelAmateur geweest.

Code:
En lees dan zelf de derde regel van onder eens.

Waar doel je op?

Ik heb het terug proberen te vinden, maar begrijp niet wat je bedoelt.
 
Ad Becude,

Het staat inderdaad niet dat dit niet mag.
Het zou wel zo netjes zijn om te melden dat je de vraag ook op een ander forum heb geplaatst.

Het zou dus wel in de regels opgenomen moeten worden.
 
Dat is dan ook het enige verzoek dat kan worden gedaan aan TS, aangeven dat de vraag op meerdere fora is gesteld. Simpel omdat het niet tegen de regels van Helpmij ingaat. Het internet is een vrij medium, dus een ieder mag zijn vraag op zo veel fora stellen als hij of zij nodig vind. Het getuigd alleen wel van fatsoen om dat dan ook even aan te geven.
 
Dan hoop ik voor jou dat de CompanyNames overeenkomen, anders heb je een groot probleem.
Code:
Sub JoinComp()
    Dim ListComp As New Collection, Comp As Variant, cel As Range
    Set ws1 = Sheets("Blad1")
    Set ws2 = Sheets("Blad2")
    Set ws3 = Sheets("Blad3")
    Sheets.Add After:=Worksheets(Worksheets.Count)
        On Error Resume Next
        For Each cel In ws2.Range("B2:B" & ws2.Range("B" & Rows.Count).End(xlUp).Row)
            ListComp.Add cel.Value, CStr(cel.Value)
        Next cel
        On Error GoTo 0
        For Each Comp In ListComp
            ws2.Cells.AutoFilter 2, Comp
            ws2.Range("A2:J" & ws2.Range("B" & Rows.Count).End(xlUp).Row).Copy Sheets(Sheets.Count).Range("A1")
            ws1.Cells.AutoFilter 2, Comp
            ws1.Range("C2:E" & ws1.Range("B" & Rows.Count).End(xlUp).Row).Copy Sheets(Sheets.Count).Range("N1")
            With Sheets(Sheets.Count)
                If .Range("N1") <> "" Then
                    On Error Resume Next
                    For Each cl In .Range("D1:D" & .Range("D" & Rows.Count).End(xlUp).Row)
                        cl.Offset(, 7).Resize(, 2).Value = .Columns(16).Find(cl, , xlValues, xlWhole).Offset(, -2).Resize(, 2).Value
                    Next
                    .Cells(1).CurrentRegion.Copy ws3.Range("A" & Rows.Count).End(xlUp).Offset(1)
                Else
                    .Cells(1).CurrentRegion.Copy ws3.Range("A" & Rows.Count).End(xlUp).Offset(1)
                End If
                .Cells.ClearContents
            End With
        Next Comp
    ws1.ShowAllData
    ws2.ShowAllData
    Application.DisplayAlerts = False
       Sheets(Sheets.Count).Delete
    Application.DisplayAlerts = True
End Sub
 
Het probleem is niet echt het dubbelposten op verschillende fora, maar het niet vermelden hiervan. Er is niet zo frusterend als een hele tijd naar een oplossing zoeken en gewoon genegeerd worden omdat er op een ander forum een oplossing is gegeven.
Dat er een oplossing is gekomen primeert natuurlijk en van welk forum dan ook doet voor de vraagsteller niet ter zake.

Ik vind dat deze melding tenminste verplicht zou moeten gesteld worden door de moderator.
 
@Rudi,

Jij hebt ook moeite voor niets gedaan want de oplossing was al lang gegeven op een ander forum.
 
jammer dat de oplossing op het andere forum niet af is

het voegt de nieuwe firma's die nog niet bestaan op blad 2 niet toe .
het vult alleen gegevens toe aan de bestaande firma's

groet sylvester
 
hallo, ik begrijp het probleem niet ik bedoel het excel probleem

het hoeft maar een keer samengevoegd te worden neem ik aan

met de hand had ik het binnen 10 min voor elklaar dus zonder macro maar met een hulpkolom en wat formules
en wat selecteren en plakken

ik zal het vanavond opnemen met de macro recorder

groet sylvester
 
Gisteravond om 19:00 al opgelost op ander forum en dan nog teveel om dit hier te laten weten :evil::evil::evil::evil:
Zeker een naam om op mijn Never-Again-lijst te zetten.
Sommige mensen zijn het echt niet waard dat ze geholpen worden en tonen geen greintje respect voor alle mensen die hier dagelijks hun belangeloos hun kennis delen om anderen verder te helpen.
 
Ik vind dat deze melding tenminste verplicht zou moeten gesteld worden door de moderator.
Ik haal het bovenstaande citaat aan, maar het is niet specifiek tegen de persoon van het citaat gericht.

De regels worden niet door de "de moderator" bepaald, maar door Helpmij.nl. Er werd al verwezen naar "De derde regel van onder", ik vermoed dat men dan naar de eerste gedeelte van de algemene voorwaarden verwijst. "Moderatorgedrag van gebruikers wordt niet geaccepteerd." Iets wat ik hier wel zie gebeuren. Er is namelijk maar 1 die netjes een melding heeft gedaan, om ons op deze topic te attenderen. Daarbij, zoals reeds door de collega moderator aangegeven, maakt het Helpmij.nl niet uit of men op meerdere forums dezelfde vraag plaatst. Wij accepteren het echter niet, als men dit op Helpmij.nl zelf gaat doen. (Meerdere keren dezelfde vraag stellen in een nieuw topic)

Graag de volgende keer gewoon enkel een melding doen. De moderatoren doen hun werk goed en snel, deze zullen het dan afhandelen. Een discussie hierover zoals nu, is helemaal niet nodig en gewenst.

Het is aan een topicstarter zelf het fatsoen te hebben om te melden, dat dezelfde vraag op een ander forum ook staat. Het is niet aan Helpmij.nl om dat fatsoen aan te leren. Het is dan ook niet iets wat in de regels opgenomen zal worden. Anders zouden de moderatoren de topics na moeten lopen en op het internet moeten gaan zoeken of het niet ergens anders ook al geplaatst is. Zouden we dat dan niet doen, dan zou er ook geen controle op die regel mogelijk zijn.
 
Laatst bewerkt:
Excuses voor het niet melden van het dubbelposten, maar ik ben compleet nieuw hier. Ik snap nu wel dat het niet netjes van me is geweest dit niet te vermelden, maar bij het openen van dit topic is dat niet in mij opgekomen en het leek mij slechts een goede manier om meer mensen te bereiken. Ik snap echter nog steeds niet hoe dit probleem opgelost moet worden en had het daarom nog niet vermeld. De oplossing op het andere forum was met behulp van de macro "aanvullen", maar daar zit ik nu al ruim een uur tevergeefs naar te zoeken..
 
er van uitgaande dat de tabellen in de 2 tabbladen als tabellen aangemaakt worden en ze TBL_Blad1 en TBL_Blad2 noemen
Code:
Sub Aanvullen()
  Dim c As Range, sq, i As Integer
  ThisWorkbook.Names.Add "Firmas", "=blad1!" & Range("Tbl_Blad1").Columns(2).Address  'gedefinieerde naam voor 2e kolom van tabel in blad1
  For Each c In Range("Tbl_blad2").Columns(2).Cells        'loop alle firmanamen af
    ThisWorkbook.Names.Add "NaamFirma", c.Value            'gedefinieerde naam
    sq = [transpose(if(firmas=naamfirma,offset(firmas,,3,,),"~~"))]  'alle jaartallen van die firma in blad1
    On Error Resume Next
    i = 0: i = WorksheetFunction.Match(c.Offset(, 2).Value, sq, 0)  'zoek jaartal in array
    If i <> 0 Then                                         'indien gevonden
      c.Offset(, 9).Resize(, 2).Value = Range("Tbl_blad1").Cells(i, 3).Resize(, 2).Value  'aanvullen in tabel blad2
    End If
    On Error GoTo 0
  Next

End Sub

kol1 & kol2 = met macro
kol3 & kol4 =met formules
een aantal rijen geschrapt ivm bestandsgrootte
 

Bijlagen

Laatst bewerkt:
ik hoop dat alles bijgelegd is

als je dan toch sleutels gebruikt zet ze dan in kolomA voor je de "tabellen" aanmaakt

dan kan het zonder macro

dit vult alleen aan in bestaande rijen in blad 2

het vult niet de onbekende firma's toe (dat doet de macro ook niet)

groet sylvester
 

Bijlagen

Laatst bewerkt:
lijkt volledig op mijn oplossing in kol 3&4?!?
 
sorry cow18 :o
ik had de formules niet gezien
ik dacht dat het de resultaten van de macro waren.

groet sylvester

ps de sleutels in kolomA zetten maakt het makkelijker om met vertikaal zoeken alle kolommen te bereiken als je straks andere dingen wil weten van de tabel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan