Excel - 删除两列之间的所有一对一行

时间:2012-06-19 20:11:37

标签: excel vbscript xls xlsx

问题:我有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列是大型的合并行 这就是我想要完成的事情。

编辑:
根据斯科特的回答,这是输出:
我为一些正在考虑这个问题的人提供了明确的标记。
output from Scott's solution


编辑: 以下VB脚本将删除列C中具有“DELETE”值的任何行 我在Excel中将它用作宏。对于那些不熟悉宏的人来说,在Excel 2007中启用Developer视图可以访问允许您切换到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

1 个答案:

答案 0 :(得分:1)

以下是基于您对数据格式编辑方式的新公式。

将以下公式放在C1中并向下运行该列以获取要删除的行:

=IF(OR(ISBLANK(A1),ISBLANK(A2)),"","DELETE")

您可能希望也可能不希望首先取消合并A列中的单元格,但考虑到Excel处理合并单元格的规则,它应该无关紧要。我在你提供的数据集上对此进行了测试,无论是否合并单元格都可以使用。

我不提供VBA解决方案,因为您在这里不需要。运行此公式,而不是在C列上过滤“DELETE”并删除行。