繁体   English   中英

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的回答,这是输出:
我在一些标记上加上了标题,以方便其他正在查看此标记的人使用。
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM