1

У меня есть столбец адресов электронной почты на листе 2, столбец A (но я мог бы поместить их на листе 1, если это будет проще / быстрее), который я хочу удалить из листа 1, столбец D, если он совпадает (может быть 2 или более вхождений). одного и того же электронного письма, которое нужно удалить / очистить, и 1000 строк в каждом листе).

После целого дня поисков на форумах я все больше путаюсь и не могу найти то, что ищу. Не уверен, использовать ли .match или .find &.ClearContents и синтаксис для перебора.

2 ответа2

0

Ваш пост помечен VBa, и этот макрос сделает это. Но я не использовал совпадение или не нашел, как вы упомянули, я не уверен, что вам пришлось использовать их или нет, я предположил, что нет, и вы просто показываете, что вы пытались.

Как всегда с макросами, сначала сохраните свою работу, создайте копию файла, а затем примените ее (на случай, если она не выполнит то, что вы хотели, значит, у вас есть резервная копия)

Sub RemoveEmails()

Dim row As Integer
row = 1

Dim sheet_A_Column As String
sheet_A_Column = "D"   ' UPDATE ME IF NEEDED. I am the column of emails in the main table. You will be deleting emails from this list

Dim sheet_B_Column As String
sheet_B_Column = "A" ' UPDATE ME IF NEEDED.  I am the list of emails which need to be matched for deletion. 

Do While (True) ' don't ever stop me! I loop forever...

Dim theValue As String
theValue = Worksheets("Sheet2").Range(sheet_B_Column & row).Value ' the value on Sheet2 (the delete list)

If theValue = "" Then
    Exit Do ' unless I run out of things to loop through, at which point, exit
End If

'Now to loop through all the cells on Sheet1 to see which value(s) need clearing or not
For Each c In Worksheets("Sheet1").Range(sheet_A_Column & ":" & sheet_A_Column).Cells
     If c.Value = theValue Then
            c.Value = ""
      End If
Next

row = row + 1
Loop

End Sub

Итак, несколько снимков экрана, чтобы помочь объяснить.

Список электронных писем на Sheet2, которые мы хотим удалить из sheet1

Теперь, Sheet1, фактический список, где мы хотим удалить некоторые из них.

И конечный результат после запуска макроса

Я должен признать, что код, который я дал, не самый эффективный, но, основываясь на вашем вопросе, он делает то, что ему нужно!

0

Существует довольно простой обходной путь к этому. Логика REMOVE DUPLICATE в Excel заключается в удалении дубликата, который отображается ниже в электронной таблице.

Если вы хотите удалить все элементы из листа 2, которые появляются на листе 1, просто вставьте элементы из листа 2 вверху листа 1, запустите функции УДАЛИТЬ ДУБЛИКАТ для столбца, а затем удалите все элементы из листа 2 ,

Легко как то.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .