![](/img/trans.png)
[英]Identifying duplicates outside of one-to-one relationship with two columns in Excel
[英]Excel - Delete all one-to-one rows between two columns
问题:我有A列和B列。A列是可预测的,A列有成千上万行。 列B每列A具有可变行。例如,列A的值可能为REQ_000021,列B中有5行。这些都可以。 我需要删除的行是每列A只有一列B的行。
我知道这不是人们通常要做的事情,因此我找不到在那里执行此操作的VB脚本。 如果网站允许,我会发布图片。 首先需要15个代表点。
编辑:
我刚刚学习了如何在stackoverflow上进行换行,所以可以这样:
Col A Col B
----------------------------------
Scott Us
Germany
Spain
----------------------------------
brian US
----------------------------------
Mark US
----------------------------------
Italy
Tim Portugal
Ireland
----------------------------------
删除brian和Mark,因为A列和B列有一行。
让Scott和Tim独自一人,因为每行A列有不止一个B列。 请记住,Scott和Tim的A列是大的合并行。
这就是我要完成的工作。
编辑:
根据Scott的回答,这是输出:
我在一些标记上加上了标题,以方便其他正在查看此标记的人使用。
编辑:以下VB脚本将删除C列中具有“ DELETE”值的任何行。
我将其用作Excel中的宏。 对于那些不熟悉宏的用户,请在Excel 2007中启用“开发人员”视图以访问该视图,该视图使您可以切换到VB屏幕。
Sub deleteDeleteString() Dim rng As Range, cell As Range, del As Range Dim strCellValue As String Set rng = Intersect(Range("C:C"), ActiveSheet.UsedRange) For Each cell In rng strCellValue = (cell.Value) 'if DELETE is found in a cell in Column C greater than 0 times, delete it's entire row If InStr(strCellValue, "DELETE") > 0 Then If del Is Nothing Then Set del = cell Else: Set del = Union(del, cell) End If End If Next cell On Error Resume Next del.EntireRow.delete End Sub
这是基于您对数据格式设置的编辑的新公式。
将以下公式放在C1中,然后向下移动列以获取要删除的行:
=IF(OR(ISBLANK(A1),ISBLANK(A2)),"","DELETE")
您可能会或可能不想首先取消合并A列中的单元格,但是考虑到Excel处理合并单元格的规则,这无关紧要。 我在您提供的数据集上对此进行了测试,无论合并或不合并这些单元格,它都能正常工作。
我没有提供VBA解决方案,因为您在这里不需要。 运行此公式,然后在C列上过滤“删除”,然后删除行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.