2015-02-09 86 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