Avatar billede kleindk Nybegynder
18. september 2003 - 09:39 Der er 14 kommentarer og
1 løsning

Opdatater en excel database med en anden

Jeg har 2 Excel workbooks hver indeholdende en database med samme recordlayout. De hedder hhv. DatabaseGL og DatabaseNY. Antal records i databaserne er ukendt og ikke  sorteret. I database NY er kundenr unikt (forekommer kun én gang). I database GL kan det samme kundenr forekomme flere gange). Her et par eksempler:

Database GL         
    A          B   
1 Kundenr    Antal 
2  45786        14 
3  45895        8 
4  46854        21 
5  45895        3
6  45912        7
osv.

Database NY
    A          B
1 Kundenr    Antal
2 45312          9
3 45895        43
4 46912        23
5 45724        19   

Jeg har brug for en stump VB kode som for hver forekomst af kundenummer i databaseNY finder alle forekomster af samme kundenr i databaseGL. Summen af antal for de fundne forekomster i databaseGL skal herefter fratrækkes antal for det pågældende kundenr i DatabaseNY  (og skrives ned i feltet i B kolonnen udfor det pågældende kundenr.

Resultatet i ovenstående eksempel skulle så blive:

Database NY  (opdateret)
    A          B
1 Kundenr    Antal
2 45312          9
3 45895        32*
4 46912        16*
5 45724        19   

De med * markerede records er blevet opdateret.

Er der en af jer skarpe hjerner som kan hjælpe mig med det her problem?
Avatar billede mrjohn Nybegynder
18. september 2003 - 11:42 #1
Skal det være i VB ? Ellers har jeg en løsning som sorterer kundenr. i stigende orden ud fra ny database og herefter Tæller antallet af forekomster og fratræker dem fra hindanden. Håber jeg har forstået det rigtigt.
Avatar billede kleindk Nybegynder
18. september 2003 - 11:46 #2
Jeg er er nok nødt til at lave det i VB fordi det skal gøres månedligt og med et stort antal filer.
Ikke desto mindre vil jeg meget gerne se dit forslag/ide. Gider du at maile?
Avatar billede mrjohn Nybegynder
18. september 2003 - 11:51 #3
Jeps, hvad er mailadresse
Avatar billede kleindk Nybegynder
18. september 2003 - 11:57 #4
kleindk@planet.nl
Avatar billede mrjohn Nybegynder
18. september 2003 - 12:02 #5
Er sendt. Håber du kan bruge noget af det. :0)
Avatar billede kleindk Nybegynder
18. september 2003 - 12:38 #6
Har kigget på dit forslag. Du tæller antallet af forekomster af KUNDENR. Det jeg har brug for er summen af ANTAL værdierne for de fundne KUNDENR værdier. Tak so far :-D
JEG HAR STADIG BRUG FOR EN LISTIG VB LØSNING TIL DETTE PROBLEM!!
Avatar billede mrjohn Nybegynder
18. september 2003 - 12:52 #7
Kan sagtens løses i min løsning som jeg har broderet lidt på, hvis du stadig er interesseret?
Avatar billede kleindk Nybegynder
18. september 2003 - 13:18 #8
Jeg modtager hver måned et stort antal forskellige DatabaseNY. Hvis jeg i hver database skal til at indlægge formler manuelt bliver det simpelthen for bøvlet.
Avatar billede aheiss Praktikant
18. september 2003 - 17:06 #9
Kan ikke helt se at VB er nødvendig.
Hvis du har tre ark. 1)Gammel 2)Ny og 3)NY() - og kolonne A I begge NY Ark er ens skulle denne formel i kolonne b i ArkNY() kunne gøre det (husk at højrestille kolonnen :

=HVIS(SUM.HVIS(Gammel!$A$1:$A$5;NY!A1;Gammel!$B$1:$B$5)=0;+NY!B1;SUM.HVIS(Gammel!$A$1:$A$5;NY!A1;Gammel!$B$1:$B$5)+NY!B1&"*")
Avatar billede kleindk Nybegynder
19. september 2003 - 00:54 #10
Tak for dit velmente forsøg aheiss. Jeg har et par kommentarer længere oppe forklaret hvorfor jeg har brug for at automatisere denne proces. Jeg har indtil nu klaret problemet med en metode som ligner den du har beskrevet, men har måttet konstatere at det er for besværligt.
Avatar billede aheiss Praktikant
19. september 2003 - 09:59 #11
OK - hvis du har et gammel, et ny og et ny2-ARK og ny2-arket er helt tomt, kan du køre følgende makro. Du skal stå i Ny2 arket :

Sub koersel()
Dim omrodegammel As Range
Dim omrodeny As Range
Dim omrodeny2 As Range
Set omrodegammel = Sheets("gammel").Range("a:b")
Set omrodeny = Sheets("ny").Range("a:b")
Set omrodeny2 = Sheets("ny2").Range("a:b")
For a = 1 To 60000
old = 0
If omrodeny(a, 1) = "" Then
    Exit Sub
End If
omrodeny2(a, 1) = omrodeny(a, 1)
old = WorksheetFunction.SumIf(Sheets("gammel").Range("a:a"), omrodeny2(a, 1), Sheets("gammel").Range("b:b"))
If old = 0 Then
omrodeny2(a, 2) = omrodeny(a, 2)
Else
omrodeny2(a, 2) = omrodeny(a, 2) + old & "*"
End If
Next
End Sub
Avatar billede aheiss Praktikant
19. september 2003 - 19:04 #12
Overså at de skulle fratækkes : Udskift 4.sidste line

omrodeny2(a, 2) = omrodeny(a, 2) - old & "*"
Avatar billede kleindk Nybegynder
21. september 2003 - 00:56 #13
Aheiss - jeg er ikke faldet i søvn. Tak for dit forslag. Jeg tester det lige og vender tilbage om et par dage.
Avatar billede kleindk Nybegynder
25. september 2003 - 00:48 #14
Hej aheiss
Opgaven er løst - takket være din inspiration.
Jeg er nødt til at bede dig om at sende mig et svar (ikke en kommentar) - ellers kan jeg ikke retmæssigt tildele dig de 100 points!!
Avatar billede aheiss Praktikant
25. september 2003 - 09:11 #15
Det var godt du kunne bruge det - og her er et svar :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester