Avatar billede mrkr Juniormester
30. november 2008 - 00:00 Der er 9 kommentarer og
1 løsning

flytte data fra et ark til et andet.

I et ark har jeg en masse kundenumre fra 1 til 100 (startark)

Det ark er opdelt i kolonnerne som følger:

a: nr
b: navn
d: adresse1
f: adresse2
h: postnr
j: by

I arket (slutark) har jeg også kundenumrene stående i kolonne a, men her er dataene trukket lidt mere sammen, så de står sådanne:

a: nr
b: navn
c: adresse1
d: adresse2
e: postnr
f: by

Det er altså de samme data, bare i mindre kolonner.

Nu vil jeg gerne have en makro der opdaterer SLUTARK udfra hvad der står i STARTARK, således de samme data står i begge ark.

Men den skal ikke ændre ved hvilke kolonner dataene står i. Det skal forblive uændret.

Jeg er godt klar over at vi skal søge på kundenr i kolonne A, men jeg kan ikke hitte ud af hvordan.
Håber at det giver lidt mening....
Avatar billede mugs Novice
30. november 2008 - 06:24 #1
LOPSLAG kan gøre det.

Funktionen henter data fra et andet ark ud fra et kriterie. Jeg har i eksemplet et ark døbt "varer".

=LOPSLAG(A24;Varer;2;FALSK)

Her vare har et unikt varenummer. Jeg vil nu overføre data fra Varer til et andet ark ved at indtaste et varenummer.

A2 = Det celle hvori jeg indtaster varenummer
Varer = Det navngivne område det indeholder de data jeg vil hente
2 = Nummeret på den kolonne i Varer der indeholder de data jeg vil hente
FALSK = Der findes kun det ene nummer i Varer (altså ingen dubletter).

Hvis du ændrer FALSK til SAND, vil funktionen hente den første forekomst af flere datasæt med det samme varenummer.

Hvis det indtastede Varenummer ikke findes får du fejl med tegnene #I/T. Det kan du komme ud over med denne:

=HVIS(ER.FEJL(LOPSLAG(A26;Varer;2;FALSK));"";LOPSLAG(A26;Varer;2;FALSK))


Hvis du lægger din e-mail, kan jeg sende dig et eksempel.
Avatar billede mrkr Juniormester
30. november 2008 - 10:38 #2
Ja, lopslag er absolut en mulighed, den havde jeg ikke lige tænkt på.
Jeg er helt med brugen af Lopslag og også hvis.fejl, men jeg er rimelig forhippet på at få det lavet i kode. :-)
Dette skyldes at jeg retter de værdier der står i kolonnerne A til D igennem en userform. Hvis jeg bruger lopslag, ryger dette når jeg retter igennem userformen.

Jeg fik ikke lige nævnt i mit første indlæg at der ikke er lige mange linjer i startark og slutark, så man kan ikke bare kopiere hele kolonner over.

Det er ikke for at jeg vil være utaknemmelig Mugs, men jeg afventer lige og ser om der er nogen der kan klare den i vba. Håber at det er ok?
Avatar billede mugs Novice
30. november 2008 - 11:04 #3
Ved LOPSLAG kopierer du kun selvvalgte celler, det behøver ikke at være hele kolonner.
Det er OK at vente - Selvfølgelig kan det laves i kode.
Avatar billede mugs Novice
30. november 2008 - 11:06 #4
Peøv at søge i eksperten's vuidensbase. Der kommer flere hits med søgeordet kopier, bl.a. denne:

http://www.eksperten.dk/spm/600496
Avatar billede excelent Ekspert
30. november 2008 - 18:29 #5
Sub Opdater()
Set sh1 = Sheets("startark")
Set sh2 = Sheets("slutark")
rk = sh1.Cells(200, 1).End(xlUp).Row
For t = 1 To rk ' ret 1 til den række hvor data står i
sh2.Cells(t, 1) = sh1.Cells(t, 1)
sh2.Cells(t, 2) = sh1.Cells(t, 2)
sh2.Cells(t, 3) = sh1.Cells(t, 4)
sh2.Cells(t, 4) = sh1.Cells(t, 6)
sh2.Cells(t, 5) = sh1.Cells(t, 8)
sh2.Cells(t, 6) = sh1.Cells(t, 10)
Next
End Sub
Avatar billede excelent Ekspert
04. december 2008 - 16:44 #6
hvordan går det ?
Avatar billede mrkr Juniormester
05. december 2008 - 15:20 #7
Beklager at jeg ikke er vendt tilbage på denne noget før. Havde svedt den ud.

Den virker ikke helt efter hensigten endnu, men vi er inde på noget af det rigtige.
Den skal kigge i startark i kolonne A, hvor den eks. finder nr. "1".
Det der står i kolonnerne b,d,f,h,j
skal den så kopiere til slutark i den linje der indeholder "1" i kolonne A

Derefter skal den gøre det samme udfor linje med nr "3" (se nedenfor)
osv.

Det der er udfordringen er at antallet af linjer i startark og slutark ikke er identiske.

I det viste eksempel nedenfor er 2,5,6,8 osv ikke i startarket. Derfor skal disse linjer ikke røres i slutarket.

Det er ikke alle numre der er oprettet i slutark og heller ikke i startark, hvilket nok komplicerer koden lidt.

Jeg havde tænkt mig at man indlæser det der står i kolonne A i startark i en variabel. For derefter at finde den i slutark og herefter "opdatere" de enkelt kolonner i den pågældende linje.


I startark kan der f.eks. stå følgenr. i kolonne A
1
3
4
7
9


I slutark kan der f.eks. stå følgende nr. i kolonne A
1
2
3
4
5
6
7
Avatar billede excelent Ekspert
06. december 2008 - 19:22 #8
Prøv lige denne - ikke testet

Sub Opdater()
Set sh1 = Sheets("startark")
Set sh2 = Sheets("slutark")
rk1 = sh1.Cells(900, 1).End(xlUp).Row
rk2 = sh2.Cells(900, 1).End(xlUp).Row

For t = 1 To rk1
On Error Resume Next
rk = sh2.Range("A1:A" & rk2).Find(sh1.Cells(t, 1).Value, LookIn:=xlValues).Row
sh2.Cells(rk, 2) = sh1.Cells(t, 2).Value
sh2.Cells(rk, 3) = sh1.Cells(t, 4).Value
sh2.Cells(rk, 4) = sh1.Cells(t, 6).Value
sh2.Cells(rk, 5) = sh1.Cells(t, 8).Value
sh2.Cells(rk, 6) = sh1.Cells(t, 10).Value
Next

End Sub
Avatar billede mrkr Juniormester
08. december 2008 - 20:41 #9
Yes, så var den der.

Mange tak for hjælpen. Og så beklager jeg den længe sagsbehandlingstid :-)
Avatar billede excelent Ekspert
08. december 2008 - 20:55 #10
velbekom
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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