在Excel中删除行,如果它不匹配

不知道如何做到这一点,我有一个Excel表导入2的电子邮件 – 但有时它只能导入1电子邮件,所以我想这些行被删除 –

1 @ EMAIL1
1 @ EMAIL1
2 @ EMAIL2
2 @ EMAIL2
3 @ email3 – 需要删除,因为它只有1个条目
4 @ EMAIL4
4 @ EMAIL4


它是从一个CSV导入 – 我需要它删除行,如果它不匹配,因为应该有两个相同的电子邮件地址导入 – 所以

if A2=A1 it's good if A2 doesn't = A1 Delete row A1 if A4=A3 it's good if A4 doesn't = A3 Delete row A3 if A6=A5 it's good if A6 doesn't = A5 Delete row A5 

如果我明白这个问题,在VBA中是非​​常简单的。 你只是想删除没有相同的电子邮件地址的行,对不对?

 a = 1 Do b = a + 1 If Cells(a, 1).Value <> Cells(b, 1).Value Then Rows(a).Delete Else a = a + 2 End If Loop Until a > Sheets(1).Rows.Count 

不是我将承认的最优雅,最通用的解决scheme,而是快速简单。

是的,您可以使用类似Apache POI-HSSF的程序从Excel中的单元格中删除这些值。它允许您使用Java读取和修改Excel工作表。 看看Usermodel API,听起来就像你在找什么。

你也可以看看这里的JExcel

假设数据是A列

 Sub Deletes() Dim lastrow As Integer lastrow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row Range("a1").Select For i = 1 To lastrow If ActiveCell.Offset(1, 0).Value <> ActiveCell.Value Then ActiveCell.EntireRow.Delete End If ActiveCell.Offset(2, 0).Select Next End Sub 

testing和工作正常。