如果不匹配,请删除Excel中的行

时间:2015-02-09 20:32:12

标签: excel vba excel-vba

不知道如何做到这一点,我有一张Excel表格可以导入2到2的电子邮件 - 但有时它只导入1封电子邮件,所以我希望删除这些行 -

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


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

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  

3 个答案:

答案 0 :(得分:1)

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

您还可以查看JExcel Here

答案 1 :(得分:1)

如果我理解这个问题,在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

我承认,这不是最优雅,最通用的解决方案,但又快捷方便。

答案 2 :(得分:0)

假设数据是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

测试并正常工作。