04. marts 2018 - 13:14 Der er 8 kommentarer og
1 løsning

VBA dynamic range autofill

Hej

Er der nogen der kan hjælpe?
Jeg har forsøgt at se på nettet, men synes ikke jeg kan finde en ordentlig tutorial.

Det drejer sig om VBA autofill i tommefelter sålænge, feltet til venstre er udfyldt.
Se billede: https://www.dropbox.com/s/5qzdyw9cqcxe7mj/Eksperten.png?dl=0.

Feltet L4, L5 osv. skal udfyldes af formlen: =LOPSLAG(Q4;NAV!$O$2:$P$1004;2;FALSK)
så længe cellen K4 er udfyldt.

Ligeledes skal udtrykket inde i formlen ændres ved hvert celle ligesom billedet, så Q4, ændrer sig til Q5 til Q6 osv.

Kan du hjælpe, eller kender du en god tutorial til dette?

Håber det kan løses :)

Med venlig hilsen
MH
Avatar billede finb Ekspert
04. marts 2018 - 13:25 #1
while
range(k4) <> ""
udfør som ønsket
loop
Avatar billede store-morten Ekspert
04. marts 2018 - 13:41 #2
Prøv:
Sub KopierNed()
    Dim ref As String, kb As String, rk As Long
   
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[0]C[5],NAV!R2C15:R1004C16,2,FALSE)"
   
    kb = Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)
    rk = ActiveSheet.Range("K65536").End(xlUp).Row
    Selection.AutoFill Destination:=Range(ActiveCell.Address & ":" & "$" & kb & "$" & rk)
End Sub
Avatar billede xl-Enthusiast Ekspert
04. marts 2018 - 14:08 #3
Hvis du vil bruge en formel, så i L4:

=HVIS.FEJL(HVIS(K4="";"";LOPSLAG(INDIREKTE("'NAV'!rc["&5&"]";0);$O$2:$P$1004;2;FALSK));"")
Avatar billede xl-Enthusiast Ekspert
04. marts 2018 - 14:38 #4
Nå, jeg fik arknavnet indsat det forkerte sted, så i stedet for den tidligere, så:

=HVIS.FEJL(HVIS(K4="";"";LOPSLAG(INDIREKTE("rc["&5&"]";0);NAV!$O$2:$P$1004;2;FALSK));"")
04. marts 2018 - 15:57 #5
@store-morten tak for svar :)

Altså den var nu mere hvor den automatisk kunne finde ud af hvor den skulle udfylde tomme felter, her skal jeg manuelt markere de felter der skal udfyldes - men det er også en løsning som kan fungere.

Har du mulighed for at omskrive koden, så den ligeledes kan udfylde værdi_2 cellerne, med den formel som på billedet: https://www.dropbox.com/s/c7xshqurtf1bcyu/Sk%C3%A6rmbillede%202018-03-04%20kl.%2015.50.25.png?dl=0.

Og kan det samles i samme makro?

Det ville hjælpe mig utrolig meget :)
Avatar billede store-morten Ekspert
04. marts 2018 - 16:48 #6
Er det en formel der allerede står i en celle der skal fyldes ned af?
f.eks. L4
04. marts 2018 - 17:09 #7
Ja altså ligesom du har gjort i den VBA kode du sendte, hvor hvis man tager udgangspunkt i cellen L4 i Værdi_ 1, så skal de felter have formlen LOPSLAG(Q4;NAV!$O$2:$P$1004;2;FALSK),
hvor Q4 ændrer sig til Q5, Q6.

Nu skal formlen bare hedde
=LOPSLAG(Q4;NAV!$O$2:Q1004;3;FALSK)
Avatar billede store-morten Ekspert
04. marts 2018 - 23:43 #8
Sub KopierNed()
    Dim ref As String, kb As String, rk As Long
   
    'Aktiverer celle L4
    Range("L4").Activate
    'Indsætter formel
    ActiveCell.FormulaLocal = "=LOPSLAG(Q4;NAV!$O$2:$P$1004;2;FALSK)"
   
    'Finder den aktive kolonne
    kb = Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)
    'Finder sidste brugte celle i kolonne K
    rk = ActiveSheet.Range("K65536").End(xlUp).Row
    Selection.AutoFill Destination:=Range(ActiveCell.Address & ":" & "$" & kb & "$" & rk)
   
    'Aktiverer celle M4
    Range("M4").Activate
    'Indsætter formel
    ActiveCell.FormulaLocal = "=LOPSLAG(Q4;NAV!$O$2:$Q$1004;3;FALSK)"
   
    'Finder den aktive kolonne
    kb = Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)
    'Finder sidste brugte celle i kolonne K
    rk = ActiveSheet.Range("K65536").End(xlUp).Row
    Selection.AutoFill Destination:=Range(ActiveCell.Address & ":" & "$" & kb & "$" & rk)
 
End Sub
Avatar billede store-morten Ekspert
04. marts 2018 - 23:54 #9
Hvis der står formler i L4 og M4 der skal køres autofil så langt ned som kolonne K er udfyldt:
Sub KopierNed_v2()
    Dim ref As String, rk As Long
   
    'Aktiverer celle L4
    Range("L4").Activate
   
    'Finder sidste brugte celle i kolonne K
    rk = ActiveSheet.Range("K65536").End(xlUp).Row
    Selection.AutoFill Destination:=Range(ActiveCell.Address & ":$L" & "$" & rk)
   
    'Aktiverer celle M4
    Range("M4").Activate

    'Finder sidste brugte celle i kolonne K
    rk = ActiveSheet.Range("K65536").End(xlUp).Row
    Selection.AutoFill Destination:=Range(ActiveCell.Address & ":$M" & "$" & rk)
End Sub
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



Seneste spørgsmål Seneste aktivitet
I dag 06:10 Excel åbner fil i kæmpe format Af Aske i Excel
I går 22:00 Datafordeler Af Lsk i PHP
I går 12:37 Summere beløb pr. dato Af TTA i Excel
31/1022:44 Tilslutte chassic fans Af viking69 i PC
31/1020:28 LED lysstofrør Af ErikHg i Fri debat