我有一个包含两列数据的excel文档。 第一列有19k行数据,第二列有2k行数据。 第2列中的所有数据都存在于第1列中。 我想删除第一列中包含第二列数据的所有行。 有没有办法如何做到这一点提前> 感谢,Lazialeexcel删除具有相同数据的行
回答
此代码将工作,通过柱A和删除,其具有在任何行中出现在列B值的任何行它假定两个列A和B值在第1行开始:
Sub RemoveDuplicates()
Dim colB As Variant, iRow As Long
colB = Range("B1:B2000") //Add you reference for column B
For iRow = Range("A1").End(xlDown).Row To 1 Step -1
If Not IsError(Application.Match(Cells(iRow, 1), colB, 0)) Then
Cells(iRow, 1).EntireRow.Delete
End If
Next iRow
End Sub
就像你所做的那样,通过删除列B中的值,您正在更改列表以检查列A中的值。我认为@Laziale真的希望列A中的单元格被删除(保留列B),而不是整行。 – Excellll 2011-05-03 18:46:21
@Excelllll - 虽然OP没有明确说明,如果是这种情况,可以通过删除EntireRow来轻易修复。让我们看看OP是否回来了他自己的一些评论。 – 2011-05-03 20:18:07
我想指出你的逻辑在某些情况下不会完成任务。例如,如果列A包含{a,b,c,d,e,f},并且列B包含{f,e,d,c,b,a},则应删除所有行。但是,您的代码将保留前3行。 – Excellll 2011-05-03 21:03:29
这可能是更容易与grep做到这一点:每列
导出到文件,并做了“的grep -v” 。这里是一个例子:
$ cat col1.txt
A
B
C
D
$ cat col2.txt
B
D
$ grep -v -f col2.txt col1.txt
A
C
使用VBA可能是最简单的方法。试试下面的宏。它将删除列A中与列B中的任何值匹配的所有单元格。如果您需要为其他列执行此操作,只需调整代码以匹配工作簿的设计即可。
Sub removematches()
Dim firstcolumn() As Variant
Dim colA As Range
Dim colB As Range
Dim i As Long, del As Long
'This will set the ranges to look in. Note that this will only work for data with no blank cells. If you have blank cells, you can change these Set statements to the following:
' Set colA = Range("A1:A100") if you have 100 rows you want to look at.
Set colA = Range("A1", Range("A1").End(xlDown))
Set colB = Range("B1", Range("B1").End(xlDown))
firstcolumn = colA
ReDim Preserve firstcolumn(1 To UBound(firstcolumn), 1 To 2) As Variant
i = 1
del = 0
Do While i <= UBound(firstcolumn)
firstcolumn(i, 2) = Application.WorksheetFunction.CountIf(colB, firstcolumn(i, 1))
If firstcolumn(i, 2) > 0 Then
Range("A1").Offset(i - del - 1, 0).Delete Shift:=xlUp
del = del + 1
End If
i = i + 1
Loop
End Sub
- 1. 删除具有顺序相似数据的行 - R Zoo
- 2. 所有列删除具有相同值的行
- 3. 休眠:将还原已删除的行具有相同的ID
- 4. 如何删除具有相同数据但日期不同的记录
- 5. 从表中删除NULL行,并且具有相同的日期
- 6. 在matlab中删除具有相同第一列值的行
- 7. 如何删除datagridview中具有相同值的行
- 8. 删除具有相同ID号的重复行
- 9. 删除具有相同列名的多行
- 10. GROUP BY删除具有相同值的行
- 11. 如果两行具有相同的值删除它擅长
- 12. SQL查询:从PostgreSQL中删除具有相同值的行
- 13. 如何删除一列中具有相同值的多行?
- 14. 删除具有相同值的数组中的项目
- 15. 合并/删除具有相同子项的数组
- 16. 如何删除具有相同值的数组元素?
- 17. 删除具有相同名称但路径不同的Cookie
- 18. 在选定数据集(ADS)中删除具有相同ID的记录
- 19. R:删除具有相同元素的行,但在不同的列中
- 20. R - 如何删除数据帧的两个准相同的行?
- 21. 如何删除具有相同模式的不同JSON文件行?
- 22. 如何删除在R的所有列中具有相同值的行
- 23. Excel删除行删除错误的行
- 24. 使用NPOI Excel工具删除行c#
- 25. 删除Excel行
- 26. 删除重复行,如果包含所有相同的数值
- 27. 如何通过pandas或spark数据框删除所有行中具有相同值的列?
- 28. 删除在另一个数据帧的相应行中具有特定值的数据帧中的行
- 29. 删除具有特定条件的数据帧的行
- 30. 过滤NSFetchedResultsController以删除具有相同名称的对象
第二列中是否有大量不同的值?例如,我们是在说4,40,400还是4000个不同的第二列值? – Jubbles 2011-05-03 16:43:51