18. september 2003 - 09:39Der 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?
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.
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?
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!!
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.
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 :
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.
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
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!!
Det var godt du kunne bruge det - og her er et svar :-)
Synes godt om
Ny brugerNybegynder
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.