Avatar billede Eva Juniormester
20. september 2017 - 08:58 Der er 17 kommentarer og
2 løsninger

Makro med søg og erstat

Hej,

Jeg har brug for en makro, som kan søge efter værdien i celle D1000 (skal findes i cellerne D1:D999) - og det kan jeg simpelthen ikke greje :-)  Kan en venlig sjæl hjælpe?? :-)
Avatar billede finb Ekspert
20. september 2017 - 09:04 #1
Indspil denne makro:
Klik på D1000
ctrl+c
ctrl+H
ctrl+V
TAB
'erstat med: et-eller-andet
Avatar billede Eva Juniormester
20. september 2017 - 09:27 #2
Ah, ja så skulle jeg jo have skrevet hvad der skulle erstattes med, det tænkte jeg ikke over. Det er nemlig sådan, at der skal erstattes med værdierne i D1000:N1000 - så kan denne løsning ikke bruges, vel?
Avatar billede finb Ekspert
20. september 2017 - 09:58 #3
Vil du kigge i D1000:N1000 og finde tilsvarende i D1:D999 ?
Det er uklart, hvad du vil
Avatar billede Eva Juniormester
20. september 2017 - 10:41 #4
Sorry! Jeg prøver at forklare bedre :-) Jeg har disse data:
Kolonne D: Sagsnr
Kolonne E: Navn
Kolonne F: Pris -
Kolonne G: Type
Kolonne H: Sælger
Kolonne I: Måned
Kolonne J: Udførelsesmåned
Kolonne K: Fakturanr.
Kolonne L: Fakturabeløb
Kolonne M:Faktura
Kolonne N: Materialeudgifter

Hver sælger har et ark for sig selv, hvor de taster deres sager ind og jeg har så lavet en makro, som kopierer sagen over til et "hovedark" - dette "hovedark" vil jeg helst ikke have sælgerne piller i, så hvis en sælger allerede har tastet en sag ind, men der er ændringer i en eller flere af cellerne E:N, tastes de ind i deres egne ark. Jeg har så lavet en makro, som kopierer det indtastede til række 1000 i "hovedarket. Derefter skal makroen lede efter sagsnr. (D1000) i området D1:D999 og erstatte med rettelserne tastet ind i E1000:N1000

Gav det bedre mening? :-) Og er det mon muligt?? :-)
Avatar billede finb Ekspert
20. september 2017 - 11:22 #5
Du kunne lade som om rettelsen var en ny indberetning,
den makro har du jo allerede.
Rettelsen kan godt laves i VBA.
Men egentlig skal du have en database, fx Acces,
bøvlet nu, men meget nemmere på sigt.
Avatar billede Eva Juniormester
20. september 2017 - 11:35 #6
Det er desværre ikke en mulighed lige i dette tilfælde, men tak for svaret - jeg knokler videre med en løsning :-)
Avatar billede finb Ekspert
20. september 2017 - 12:19 #7
for each cellD in range("d1:d999")
  if cellD.value = range("d1000").value then
    cellD.ofsett(0,1) = range("d1000").ofsett(0,1)
    cellD.ofsett(0,2) = range("d1000").ofsett(0,2)
    cellD.ofsett(0,3) = range("d1000").ofsett(0,3)
    cellD.ofsett(0,4) = range("d1000").ofsett(0,4)
    cellD.ofsett(0,5) = range("d1000").ofsett(0,5)
    cellD.ofsett(0,6) = range("d1000").ofsett(0,6)
    cellD.ofsett(0,7) = range("d1000").ofsett(0,7)
    cellD.ofsett(0,8) = range("d1000").ofsett(0,8)
    cellD.ofsett(0,9) = range("d1000").ofsett(0,9)
    cellD.ofsett(0,10) = range("d1000").ofsett(0,10)
  endif
next
Avatar billede Eva Juniormester
20. september 2017 - 13:02 #8
Object doesn't support this property or method (Error 438)
Avatar billede jens48 Ekspert
20. september 2017 - 13:51 #9
ret ofsett til offset
Avatar billede Mads32 Ekspert
20. september 2017 - 14:03 #10
Hej Eva
Jeg har lavet et lille eksempel .
Jeg har indsat en hjælpekolonne P, med formel der finder sagsnummer.
Derefter udføres en filtrering, samt kopiering af lille makro.

Du kan tilrette makroen så den passer på dit faneblad.

vedlagt link
https://www.dropbox.com/s/698rb6k37qddkrg/makro_med_soeg_og_erstat.xlsm?dl=0
Avatar billede Eva Juniormester
20. september 2017 - 15:15 #11
Du er så sej til de makroer, Mads32! :-) Jeg får det ikke helt til at spille, men eftersom der sker præcis det jeg vil have i dit ark, må det være sådan - jeg skal nok bare have det tilpasset ordenrligt.

Tak for hjælpen atter engang :-)
Avatar billede Mads32 Ekspert
20. september 2017 - 17:01 #12
Hej
Jeg er glad for at du kunne bruge det.
Har du brug for mere hjælp, er jeg gerne til rådighed.

Jeg har lavet makroen med exel´s makrooptager, og tilrettet med Range("Q1").
Jeg har anvendt relative referencer, da jeg optag kopieringsdelen.
Avatar billede Jan Hansen Ekspert
20. september 2017 - 20:24 #13
Her er en lille macro løsning

https://1drv.ms/x/s!AmlqgsyjsAq5g7EolAFYm3PhUqOOOg

Jan
Avatar billede Mads32 Ekspert
20. september 2017 - 22:22 #14
Hej Jan

Jeg vil gerne se dit forslag, men det lykkes mig ikke at loade dit link.
Vil du ikke godt lægge dit forslag på DropBoks.
Avatar billede Jan Hansen Ekspert
20. september 2017 - 22:37 #15
Avatar billede Mads32 Ekspert
20. september 2017 - 23:35 #16
Tak Jan

Super program.  Det er noget mere elegant et mit forslag. Jeg ville bruge din løsning selv om jeg ikke til fulde forstår detaljerne i koderne.
Avatar billede Jan Hansen Ekspert
21. september 2017 - 06:04 #17

Option Explicit

Gør at alle variable skal være dim før de kan bruges


Dim ws As Worksheet

Laver en variabel til at holde arket


Dim rColumn As Range, rCell As Range
Dim rRet As Range, rCopy As Range

laver variable til at holde celle/celler


Sub SøgErstat()

Starter macro


    Set ws = ActiveSheet

Sætter sheet-variavlen til det aktive Ark (kan også være et ikke aktiv ark hvis du skriver "Sheets(arknavnet)" istedet for "ActiveSheet" arknavnet skal være i gåseøjne


    Set rColumn = ws.Range("D1", "D999")

Sætter Range-Variablen "rColumn" til de celler der skal undersøges


    Set rRet = ws.Range("D1000")

...Cellen med Søge info


    Set rCopy = ws.Range("E1000", "N1000")

...Cellerne der skal kopieres

   
    For Each rCell In rColumn

Løkke der bladre gennem alle celler i rCloumn og sætter i hvert gennem løb rCell til den aktive celle


        If rCell.Value = rRet.Value Then ws.Range("E" & rCell.Row, "N" & rCell.Row).Value = rCopy.Value

Tjekker om rCell's indhold er = rRet's indhold, hvis ja så ws.Range("E" , er kolonne E i det aktive Ark, & rCell.Row , & ligger det efter følgende sammen med det foregående, rCell.Row finder række nr. som rCell står i.
"ws.Range("E" & rCell.Row, "N" & rCell.Row)" tildeles indholdet i  "rCopy.Value"


    Next

slutter løkken


End Sub

slutter makroen


Jan
Avatar billede Eva Juniormester
21. september 2017 - 11:43 #18
Tak Jan - Jeg endte med at bruge din løsning, da Mads32's drillede lidt :-)
Avatar billede Jan Hansen Ekspert
21. september 2017 - 12:02 #19
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

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