2

问题:我有 A 列和 B 列。A 列是可预测的,A 列有数千行。B 列的每个 A 列都有不同的行。例如,A 列的值 REQ_000021 可能在 B 列中有 5 行。这些都可以。我需要删除的行是每个 A 列只有一个 B 列的行。

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

编辑:
我刚刚学会了如何在 stackoverflow 上换行,所以这里是:

Col A Col B 
----------------------------------
Scott Us
德国
西班牙
-------- --------------------------
布赖恩美国
---------- ------------
Mark US
----------------------------------
意大利
Tim葡萄牙
爱尔兰
----------------------------------

删除 brian 和 Mark,因为 A 列和 B 列各有一行。
让 Scott 和 Tim 一个人呆着,因为每列 A 行有不止一个 B 列行。请记住,Scott 和 Tim 的 A 列是大的合并行。
这就是我想要完成的。

编辑:
根据斯科特的回答,这是输出:
为了让其他正在查看此内容的人清楚起见,我为一些标记加上了标题。
斯科特解决方案的输出


编辑:以下 VB 脚本将删除 C 列中具有“DELETE”值的任何行。
我在 Excel 中将其用作宏。对于那些刚接触宏的人,请在 Excel 2007 中启用开发人员视图以访问可让您切换到 VB 屏幕的视图。

子 deleteDeleteString()
变暗为范围,单元格为范围,删除为范围
将 strCellValue 调暗为字符串
设置 rng = Intersect(Range("C:C"), ActiveSheet.UsedRange)
对于每个单元格

strCellValue = (cell.Value)
'如果在 C 列的单元格中发现 DELETE 大于 0 次,则删除它的整行
如果 InStr(strCellValue, "DELETE") > 0 那么
如果 del 什么都不是,那么
设置 del = 单元格
否则:设置 del = Union(del, cell)
万一
万一
下一个单元格
出错时继续下一步
del.EntireRow.delete
结束子
4

1 回答 1

1

这是基于您对数据格式的编辑的新公式。

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

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

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

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

于 2012-06-19T20:41:13.033 回答