• 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.

Tunnel vision?

Status
Niet open voor verdere reacties.

Scubaman

Gebruiker
Lid geworden
19 mrt 2010
Berichten
99
Goede middag,


Dit is mijn eerste vraag in dit Excel forum. Ik hoop dat er iemand is die me vooruit kan helpen.;-)

Ik heb een echel bestand met twee sheets. He eerste bevat gastengegevens van 2017 en het tweede van 2018. Nu heb ik met conditional format dubbele aangegeven. Last Name, Date of brith and email address. Als alle drie identiek zijn aan gegevens kleurt last name geel.
Gasten willen natuurlijk geen dubbele mail ontvangen.

Mijn probleem/vraag
Is het mogelijk als Last Name geel wordt in sheet 2018 "automatisch naar sheet 2017 te gaan om daar de rij eventueel te verwijderen?

Heb een klein voorbeeld bestand toegevoegd.

Bekijk bijlage Guestlist vba trial.xlsm


PS Ik werk op een Mac met Office for Mac
 
Laatst bewerkt:
Test het maar eens.

Code in moduleblad "2018".
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Columns(5)) Is Nothing Then
  rw = Application.Match(Target, Sheets("2017").Columns(5), 0)
  If Not IsError(rw) Then Sheets("2017").Rows(rw).Delete
  End If
End Sub
 
Goede middag Harry,


hartelijk dank voor de hulp. Maar ik denk dat ik naar de kapper moet. (Lijkt erop dat ik blond geworden ben), want ik krijg met geen mogelijkheid je code ergens geplaatst.
Als ik een module probeer aan te maken krijg ik de error, expect end sub

Enig idee?
 
Correct knippen en plakken is belangrijker dan knippen en scheren ....
 
dat klopt, ben blij dat ik een goede kapper heb.:)

Maar daarmee weet ik nog niet hoe ik de code correct plak en knip en hoe ik hem werkend krijg
 
Als je niets van VBA weet dan kan je toch net zo goed formules gebruiken. Je kan beter geen hele kolommen als bereik definiëren en in de voorwaardelijke opmaak gebruiken. Dit komt de snelheid niet ten goede. Beter kan je gebruikmaken van tabellen. In de tab 2017 even filteren op de kolom 'In 2018' dan ben je er ook.
 

Bijlagen

  • Guestlist vba trial.xlsb
    32,8 KB · Weergaven: 48
Dank je wel voor je advies.

Hetgeen jij gedaan hebt, lijkt een "beetje" op mijn voorwaardelijk opmaak. Ik wist niet dat voorwaardelijke opmaak de snelheid beïnvloedt. In beide werkbladen wordt nu een dubbel aangegeven, dat klopt, maar misschien vraag ik te veel, maar hoe kom ik nu "automatisch bij de rij in blad 2017. Bij twee rijen is het niet zo'n probleem, maar als het eerste blad 5000 rijen bevat wordt het zoeken. Kan natuurlijk ook met een filter, maar voor zover ik de VBA cod begrijp, gaat het daar wel "automatisch.
Volgens mij kan zo iets niet met een formule.
 
Het automatisch verwijderen gaat inderdaad niet met een formule maar als je filtert op True dan kan je toch in 1 keer alle rijen verwijderen? Als het perse met VBA moet dan zal je de code van HSV even moeten aanpassen want nu wordt er alleen gekeken naar de achternaam.
 
Sorry voor het verkeerde woordgebruik.

Wat ik probeerde te zeggen dat in de VBA code, de rij in werkblad 2017 verwijderd wordt. Dat de code er voor zorgt dat dit gebeurt.
 
@VenA,

dank je wel voor je antwoord. hartstikke bedankt dat je "mee denkt" en me even een duw in de juiste richting geeft. ( voordat er commentaar komt, een duw is hier figuurlijk gedacht)
Je hebt natuurlijk gelijk dat het met een filter true, de dubbele gegevens meteen zichtbaar zijn. Ik denk dat ik verblind was (ook weer figuurlijk bedoelt) door het eventueel gebruik van een VBA code.
 
Laatst bewerkt:
Waarom maak je geen unieke lijst aan op een andere tab? Dan behoud je de oorspronkelijke data.

Bv
Code:
Sub VenA()
  With Sheets("Mailing")
    .Cells(1).CurrentRegion.Clear
    Sheets("2017").ListObjects(1).Range.Copy .Cells(1)
    Sheets("2018").ListObjects(1).DataBodyRange.Copy .Cells(Rows.Count, 1).End(xlUp).Offset(1)
    .ListObjects(1).Range.RemoveDuplicates Array(5, 6, 7), xlYes
    .Columns.AutoFit
  End With
End Sub
 

Bijlagen

  • Guestlist vba trial.xlsb
    37,8 KB · Weergaven: 58
@VenA,

dank je wel, ga er naar kijken. Wordt achterpas maandag. Ik hoop dat ik er dan op terug mag komen.

Fijn weekend
Bert
 
Of zoals in de openingsvraag, "eventueel rij verwijderen in 2017".

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Columns(5).Resize(, 3)) Is Nothing Then
    hs = Join(Application.Transpose(Application.Transpose(Cells(Target.Row, 5).Resize(, 3))), "|")
    sv = [if(row(Lastname),Lastname & "|" & Gebdatum & "|" & Email )]
    rij = Application.Match(hs, sv, 0)
  If Not IsError(rij) Then Sheets("2017").Rows(rij).Delete
End If
End Sub
 

Bijlagen

  • Guestlist vba trial.xlsb
    36 KB · Weergaven: 57
Laatst bewerkt:
@ Harry,


dank je wel voor je update. Sorry dat het antwoord even op zich liet wachten.

Ik heb het attachment gedownload en uitgeprobeerd, maar er wordt in sheet 2017 niets gewist. En in het overzicht worden alle records bij elkaar gezet. Ik denk dat ik iets niet goed doe.
Heb je misschien aan aanwijzing?

Met vriendelijke groeten,
Bert
 
Ik heb er geen overzicht in gezet.

Bij mij werkt het als volgt.
Zodra je iets invult in de kolommen E; F; G van sheet 2018, wordt er gekeken of dit overeenkomt met een rij van sheet 2017.
Zo ja?, wordt deze verwijderd.
 
Goede middag Harry,

dat is eigenlijk precies wat ik zoek. Maar op de een of andere manier doe ik iets fout. Ik krijg je code nergens werkend. Heb met Alt +F11 de VBA editor geopend en op verschillende plaatsen geplakt. Het lijkt dat ik iets over het hoofd zie. Zou je aub een hint kunnen geven?

Bedankt,
Bert
 
Druk Alt+F11, aan de linkerkant zie je alle modules en bladnamen staan.
Dubbelklik op 'sheet2(2018)', daar staat de code.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan