• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Combinatie Macro en filter: kopieren gegevens gaat fout

Status
Niet open voor verdere reacties.

mayflower

Gebruiker
Lid geworden
21 jul 2009
Berichten
38
Beste forumleden. Middagje gestoeid met Macro icm filter. Dit is het geval:

Handmatig:
Van een datarange filter ik op een kolom die een bepaalde tekst bevat. Kolom I van bijgaand bestand.
Vervolgens type ik bij de bovenste gevonden regel in kolom J (een lege cel) bijvoorbeeld de waarde 2.6
Daarna kopieer ik deze waarde naar alle andere gevonden rijen.
Vervolgens doe ik dit nog een keer of 5 (en ik zou er nog veel meer willen) met elke keer een andere filterwaarde en een andere waarde die ik type
Macro:
handmatige gedeelte met macro opgenomen en afgespeeld. Dat gaat goed totdat ik de rijen op een andere volgorde zet.
Dit heb ik bijna opgelost door in de macro alle plakacties op de bovenste rij te laten beginnen. Alle rijen hebben de juiste waarde gekregen, behalve de eerste. Die wordt bij elke plakactie overschreven en de laatste (verkeerde) wordt dan getoond.

Vraag 1: hoe krijg ik ook op de eerste geselecteerde rij de juiste waarde?
Vraag 2: de laatste plakactie zorgt er ook voor dat onderaan (ergens tussen de blanco regels 950 en 1000) de laatste waarde ook geplakt wordt

Enorm bedankt voor jullie hulp.

De code is
Code:
sub Amazon1()
Range("I2").Select
    ActiveSheet.Range("$A$1:$L$1000").AutoFilter Field:=9, Criteria1:= _
        "*Amazon Svcs IT*"
    Range("J2").Select
    Application.CutCopyMode = False
    Range("J2").FormulaR1C1 = "2.7"
    Range("J2").Select
    Selection.Copy
    Range("J2:J1000").Select
    ActiveSheet.Paste
    ActiveWindow.Zoom = 99
    ActiveSheet.Range("$A$1:$L$1000").AutoFilter Field:=9, Criteria1:= _
        "*Amazon Svcs ES*"
    Range("J2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "2.8"
    Range("J2").Select
    Selection.Copy
    Range("J2:J1000").Select
    ActiveSheet.Paste
    ActiveSheet.Range("$A$1:$L$1000").AutoFilter Field:=9, Criteria1:= _
        "*Amazon Svcs FR*"
    Range("J2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "2.9"
    Range("J2").Select
    Selection.Copy
    Range("J2:J1000").Select
    ActiveSheet.Paste
    ActiveSheet.Range("$A$1:$L$1000").AutoFilter Field:=9, Criteria1:= _
        "*Amazon Svcs UK*"
    Range("J2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "2.6"
    Range("J2").Select
    Selection.Copy
    Range("J2:J1000").Select
    ActiveSheet.Paste
    ActiveSheet.Range("$A$1:$L$1000").AutoFilter Field:=9
    ActiveSheet.Range("$A$1:$L$1000").AutoFilter Field:=2
End Sub
 

Bijlagen

  • macro_filter.xlsm
    30,6 KB · Weergaven: 79
Laatst bewerkt:
Code kan je voor de leesbaarheid beter tussen codetags plaatsen.

Is de waarde die je invult afhankelijk van het land? Of is dit willekeur?

Met een VLOOKUP() kan je het gewenste, denk ik, ook wel bereiken.
 

Bijlagen

  • macro_filter.xlsm
    32,4 KB · Weergaven: 27
Bedankt V&A. Wat nu als de positie van de landcode niet elke keer op dezelfde positie begint? Ik heb dit van de week met vind.spec geprobeerd maar kwam er niet uit. Net verder gezocht en geprobeerd en ik doe nu het volgende:
=DEEL(I4;VIND.SPEC("Svcs";I4)+5;2) Dit levert mij bijvoorbeeld de waarde IT op. Die moet ik dan in ander tabblad zoeken zoals je voorstelde. Deze VERT.ZOEKEN functie ga ik in een aparte kolom doen, omdat het anders te moeilijk wordt voor me ;).
 
Elke reactie is natuurlijk afhankelijk van de informatie die je geeft. In het bestandje staat de landcode steeds op dezelfde plek. De formule wijkt niet zo heel veel af van de eerdere en kan je ook wel in 1 kolom gebruiken. Niets moeilijk aan.;)

Code:
=VLOOKUP(MID(I2;FIND("Svcs";I2)+5;2);Landen!$A$1:$B$5;2;0)
 

Bijlagen

  • macro_filter (1).xlsm
    32,7 KB · Weergaven: 22
Evt. met macro
 

Bijlagen

  • macro_filter (1).xlsb
    26,1 KB · Weergaven: 29
Laatst bewerkt:
Bedankt V&A en Jack!
@Jack: ik zie dat je een een extra macro hebt gemaakt cq stukje code boven de macro hebt gezet. Of is dit de enige macro? Heb je die ook opgenomen of handmatig erin gezet? Kan je kort uitleggen wat er in die code gebeurt? Indrukwekkend.
Code:
Sub tst()
Application.ScreenUpdating = False
sn = Sheets("Blad4").Cells(1).CurrentRegion.Offset(1).SpecialCells(2)
  With Sheets("Macro").Range("A1").CurrentRegion
    For i = 1 To UBound(sn)
      .AutoFilter 9, sn(i, 1)
      .Range("J2:J" & .Cells(Rows.Count, 9).End(xlUp).Row) = sn(i, 2)
    Next
    .AutoFilter
  End With
End Sub

@V&A: formules zijn niet mijn sterkste kant. Vroeger met wiskunde legde een leraar een moeilijke vergelijking uit en ik kon dat volgen. Twee dagen later met een proefwerk dezelfde formule maar ergens is een - in een + veranderd en ik was totaal het spoor bijster :rolleyes:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan