Avatar billede kasp Nybegynder
27. august 2007 - 12:37 Der er 5 kommentarer og
1 løsning

Hvis/Lopslag i en Makro

Hej.
Jeg har en lille udfordring som jeg håbede der var nogen der kunne hjælpe mig med.

Jeg skal have lavet følgende som en Makro.

Jeg har et regneark ”Renter mellemregning”. I denne fil findes der et ark der hedder ”eksport” (dette er grunddata filen).

Her udover har jeg et andet regneark ”Deldata PI”. I denne fil er der et ark der hedder ”rettelser” (dette er modtager filen).

Jeg skal have kopieret nogle data fra arket ”eksport” til arket ”rettelser”. Mere bestemt skal jeg have kopieret et beløb der står i kolonne K i ”eksport-arket” til kolonne E i ”rettelser-arket”.
Det jeg i bund og grund behøver er at lave en Hvis-sætning/Lopslag i en makro der hedder:

Hvis produktnummeret i kolonne A i arket ”eksport” stemmer overens med produktnummeret i kolonne A i arket ”Rettelser”, skal beløbet der fra kolonne K (i eksport filen) kopieres til kolonne E i arket ”rettelser” udfor det rigtige produktnummer.

Håber nogen kan hjælpe.
Avatar billede x-lars Novice
27. august 2007 - 14:22 #1
Er det noget, du skal lave med en makro?

Ellers burde denne kunne gøre det(skal stå i E2 og kopieres ned dérfra, ret selv stiangivelser og filnavne til):

=HVIS(ER.FEJL(LOPSLAG(A2;'C:\Din_sti\[testeren.xls]Eksport'!$A$1:$K$1000;KOLONNE(K:K);FALSK));"";LOPSLAG(A2;'C:\Din_sti\[testeren.xls]Eksport'!$A$1:$K$1000;KOLONNE(K:K)))
Avatar billede innoteck Nybegynder
27. august 2007 - 14:57 #2
Hmmm?... Dette burde virke, forudsat at samme produktnummer ikke forekommer flere gange på listen (i såfald kræves en lidt mere avanceret kode)...


Sub FlytData()
Dim Belob As Integer
Dim ProdNr As String

AntalRaekker1 = 10 'antal rækker med data i 'eksport'
AntalRaekker2 = 112 'antal rækker med data i 'rettelser'

Sheets("eksport").Activate

For i = 2 To AntalRaekker1

    ProdNr = Cells(i, 1).Value
    Belob = Cells(i, 11).Value

    Sheets("rettelser").Activate

    For x = 2 To AntalRaekker2
   
    If Cells(x, 1) = ProdNr Then
        Cells(x, 5) = Belob 
    End If

    Next x

    Sheets("eksport").Activate

Next i

End Sub
Avatar billede kasp Nybegynder
28. august 2007 - 09:25 #3
Hej Innoteck.
Tak for dit svar det virker fint :-).
Jeg har dog lige et lille spørgsmål. Hvordan sikre jeg mig at de steder der bliver søgt i "Eksport" arket, kun er i rækkerne 4 til 19, mens at de rækker der bliver søgt i, i "Rettelser" arket er fra 2 til 2875??

Håber dette kan lade sig gøre :-).
Avatar billede innoteck Nybegynder
28. august 2007 - 09:39 #4
Antallet af rækker som gennemløbes (samt startrækken) bestemmes af løkkestrukturen "For ... Next", hvor 'For i = 4 To Antalraekker1' (Antalraekker1 = 19) vil gennemløbe rækkerne 4 til 19. (Tilsvarende for 'For x...')

Koden tilrettes som følgende:
-----------------------------

Sub FlytData()
Dim Belob As Integer
Dim ProdNr As String

AntalRaekker1 = 19 'antal rækker med data i 'eksport'
AntalRaekker2 = 2875 'antal rækker med data i 'rettelser'

Sheets("eksport").Activate

For i = 4 To AntalRaekker1

    ProdNr = Cells(i, 1).Value
    Belob = Cells(i, 11).Value

    Sheets("rettelser").Activate

    For x = 2 To AntalRaekker2
   
    If Cells(x, 1) = ProdNr Then
        Cells(x, 5) = Belob 
    End If

    Next x

    Sheets("eksport").Activate

Next i

End Sub
Avatar billede kasp Nybegynder
28. august 2007 - 11:02 #5
Hej Innoteck.
Tak for din hjælp :-)
Avatar billede innoteck Nybegynder
28. august 2007 - 14:45 #6
Velbekomme!
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