Jak usunąć pasujące wiersze?

0

Mam plik csv z listą osób (imię, nazwisko, adres e-mail), a następnie otrzymam listę osób w innym pliku csv, który wypisał się (tylko jedna kolumna z e-mailem).

P: Jak mogę usunąć wszystkie wiersze z pierwszego pliku, jeśli wiersz zawiera wiadomość e-mail osoby, która się wypisała?

Myślałem o użyciu arkusza kalkulacyjnego (MS Excel, Open Office, Google), ale mogę użyć dowolnego innego rozwiązania.

Próbowałem MS Excel, ale proste usuwanie duplikatu nie działa. Chyba muszę zastosować inne podejście. Ale nie wiem, co robić dalej.

Zauważ, że muszę wyeksportować „czysty” plik csv do nowego pliku. Oczywiście nie chcę, aby plik zawierał wiadomość „bez subskrypcji”.

Radek
źródło
Nie jesteśmy tutaj, aby powiedzieć ci, jakiego programu użyć i jak to zrobić. Jesteśmy tutaj, aby Ci pomóc, gdy powiesz nam, co próbowałeś. Zdecyduj, czego będziesz używać, i udostępnij, gdzie utkniesz.
CharlieRB
Próbowałem MS Excel, ale proste usuwanie duplikatu nie działa. Chyba muszę zastosować inne podejście. Ale nie wiem, co robić dalej.
Radek
@ sunk818: to świetny pomysł. Zasługuje na odpowiedź ...
Radek

Odpowiedzi:

2

Jeśli korzystasz z Microsoft Access, możesz po prostu połączyć się z niezapisanym CSV (zakładając, że jest to ten sam plik za każdym razem z różnymi e-mailami). Następnie utwórz zapytanie aktualizujące, które oflaguje subskrybentów flagą anulowania subskrypcji. Być może to samo zapytanie może zaktualizować inną kolumnę o bieżącą datę / godzinę. Następnie możesz uruchomić inne zapytanie, które wyeksportuje zaktualizowaną tabelę do czystego pliku CSV. Możesz to wszystko zrobić jako makro w programie Access. Tak długo, jak połączony plik CSV jest taki sam, wszystko inne może być przetwarzane automatycznie, a czysty plik CSV może zostać utworzony w ciągu kilku sekund.

Słońce
źródło
Dlatego poprosił o sugestię innego rodzaju rozwiązania. Myślę, że używanie db może być nieco łatwiejsze i szybsze.
Radek
1

Mam półautomatyczny sposób, aby to zrobić w programie Excel:

  1. Zaimportuj pliki CSV na dwa arkusze. Zadzwoniłem do nich MasterListiUnsubList
  2. Posortuj UnsubList ( Sort A to Z) za pomocą przycisku Sortuj i filtruj
  3. W MasterListutworzyłem kolejną kolumnę o nazwieUnsub?
  4. W każdym wierszu pod Unsub?kolumną wprowadź następującą formułę:

    =IF(C2=VLOOKUP(C2,UnsubList!$A$2:$A$1000,1),"Unsub","Keep")

    W tym przykładzie byłoby to dla drugiego rzędu. Jeśli lista nie zawiera więcej niż 999 wpisów, musisz zwiększyć zakres.

  5. Następnie włącz Filtr (pod przyciskiem Sortuj i Filtruj). Powinieneś mieć coś podobnego do zrzutu ekranu poniżej.

  6. Odznacz tylko Keepwiersze, używając menu rozwijanego dla Unsub?kolumny. Oznacza to, że tylko wiersze wymagające usunięcia pozostaną widoczne
  7. Zaznacz wszystkie wiersze oprócz nagłówka, przeciągając numery wierszy z góry na dół, kliknij prawym przyciskiem myszy i kliknij Deletemenu podręczne
  8. Teraz zniknęły z MasterList
  9. Usuń kolumnę Anuluj i ponownie wyeksportuj do pliku csv

MasterList

UnsubList

Alex
źródło