2012-06-19 38 views
2

问题:我有列A和列B.列A是可预测的,有数千列A行。 B列在每列A中有变化的行。例如,列A可能在列B中具有5行的值REQ_000021。这些都可以。我需要删除的行是每列A只有一列B的行。Excel - 删除两列之间的所有一对一行

我知道这不是一个典型的事情,人们这样做,所以我找不到一个VB脚本来做到这一点。 如果网站允许,我会发布图片。首先需要15个代表点。

编辑:
我刚学会做换行符的计算器,所以这里这个云:

 
Col A Col B
----------------------------------
Scott Us
Germany
Spain
----------------------------------
brian US
----------------------------------
Mark US
----------------------------------
Italy
Tim Portugal
Ireland
----------------------------------

删除布莱恩和马克因为有一行列A和B列中
离开斯科特和蒂姆独自一人,因为每列A列有多于一列的B列。请记住,Scott和Tim的列A是大的合并行。
这就是我想要完成的。

编辑:
每斯科特的答案,这是输出:
我一些字幕标记为清楚起见,为别人谁在看这个。
output from Scott's solution


编辑: 这下面的VB脚本将删除具有“删除” C列
我用它在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 
+1

这样做的效果是因为对于合并的单元格,Excel将读取合并区域左上角最左侧单元格中的值,而不管数据最初输入的是哪个单元格。 –

回答

1

这是根据您对数据格式化方式进行编辑的新公式。

将在C1以下公式和向下运行的列得到行被删除:

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

您可能会或可能不希望取消合并列单元格的第一个,但它不该根据Excel处理合并单元格的规则,这并不重要。我在您提供的数据集上测试了这个数据集,并且它在合并或不合并单元格的情况下工作。

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

+0

谢谢您的时间。 我更新了我的问题,以反映我现在在寻找更好的东西,现在我在stackoverflow上学到了更多的格式化选项。我必须使用一个

封闭标签的表,以便发生间距。我还必须为每个换行使用
标签。 – joshpt

+0

是的,我可以作为Excel宏输入的VBA脚本将会很好。 – joshpt

+0

我根据您更新的问题更新了我的答案。这里不需要VBA,所以我没有走这条路。 –

相关问题