2015-02-09 89 views
0

不知道如何做到这一点,我有进口的邮件中2的一个Excel工作表 - 但有时只进口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 
+0

这太含糊了。您是否想要修改导入过程,以便它不导入单个电子邮件,或者您是否想要创建后期导入功能以清除单个电子邮件?如果前者,请发布您的代码。 – DeanOC 2015-02-09 20:39:00

+0

使用COUNTIF()添加一列来计算实例的数量,然后用1排序并删除行 – 2015-02-09 20:48:59

+0

在Linux上,它是一个带有'sort file.txt | uniq -d'打印出来的重复项 – 2015-02-09 21:03:49

回答

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 

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

+0

谢谢完美地工作! – jewjitsu 2015-02-09 22:27:00

+0

很高兴它的工作完美。你为什么不投票回答? – JRQ 2015-02-11 22:35:29

+0

我试着投2个答案,我想我什么时候这样做,因为我投票给你的第一个,它没有投票,当我去投其他 - 所以经验教训...我只能投1 :)谢谢! – jewjitsu 2015-02-15 20:28:17

1

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

您还可以看看JExcel Here

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 

测试并且工作正常。

+0

很高兴它的工作完美。你为什么不投票回答? – Nagendra 2015-02-16 11:40:26