Excel - 删除两列之间的所有一对一行
Posted
技术标签:
【中文标题】Excel - 删除两列之间的所有一对一行【英文标题】:Excel - Delete all one-to-one rows between two columns 【发布时间】:2012-06-21 22:40:26 【问题描述】:问题:我有 A 列和 B 列。A 列是可预测的,A 列有数千行。 B 列的每个 A 列都有不同的行。例如,A 列的值 REQ_000021 可能在 B 列中有 5 行。这些都可以。我需要删除的行是每个 A 列只有一个 B 列的行。
我知道这不是人们做的典型事情,所以我找不到一个 VB 脚本来做这件事。 如果网站允许,我会发布图片。首先需要 15 个代表点。
编辑: 我刚刚学会了如何在 *** 上换行,所以这里是:
上校 A 上校 B ---------------------------------- 斯科特我们 德国 西班牙 ---------------------------------- 布莱恩美国 ---------------------------------- 标记我们 ---------------------------------- 意大利 蒂姆·葡萄牙 爱尔兰 ----------------------------------删除 brian 和 Mark,因为 A 列和 B 列各占一行。 让 Scott 和 Tim 一个人呆着,因为每列 A 行有不止一个 B 列行。请记住,Scott 和 Tim 的 A 列是大的合并行。 这就是我想要完成的。
编辑: 根据 Scott 的回答,这是输出: 为了让其他正在查看此内容的人清楚,我为一些标记添加了标题。
编辑: 以下 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 结束子【问题讨论】:
这是有效的,因为对于合并的单元格,Excel 会读取合并区域最左上角单元格中的值,而不管数据最初是在哪个单元格中输入的。 【参考方案1】:这是基于您对数据格式进行编辑的新公式。
将以下公式放在C1中并向下运行列以获取要删除的行:
=IF(OR(ISBLANK(A1),ISBLANK(A2)),"","DELETE")
您可能希望也可能不希望首先取消合并 A 列中的单元格,但考虑到 Excel 如何处理合并单元格的规则,这无关紧要。我在您提供的数据集上对此进行了测试,无论是否合并单元格都有效。
我不提供 VBA 解决方案,因为您在这里不需要。运行此公式,而不是在 C 列上筛选“DELETE”并删除您的行。
【讨论】:
感谢您的宝贵时间。我更新了我的问题以更好地反映我正在寻找的东西,因为我在 *** 上学习了更多格式选项。我必须为表格使用一个 封闭标签才能产生间距。我还必须为每个换行符使用 标签。 是的,我可以作为 Excel 宏输入的 VBA 脚本会很好。 我根据您更新的问题更新了我的答案。这里不需要 VBA,所以我没有走那条路。以上是关于Excel - 删除两列之间的所有一对一行的主要内容,如果未能解决你的问题,请参考以下文章