根据两列

时间:2015-09-16 15:16:46

标签: excel vba excel-vba

我已经尝试在这里搜索,并且通常会通过Google找到适合我需求的解决方案,但却空洞了。我是使用Excel VBA的新手,但我认为这是解决这种情况的正确方法。

我有一个大型电子表格 - 许多工作表,每个工作表有数千行。每个工作表中都有类似的数据。共有5列,A-E。列C具有重复数据,列E消除歧义。我正在寻找的是一种在条件为&#34时删除行的方法;如果c28 = c29 = c30 = c31,并且e28:e31包含' .tif',则删除行e28:e31不是' .tif'。"

我希望这是有道理的。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我不明白为什么人们会浪费那么多时间来寻找他们所需要的代码来解决他们独有的问题。学习VBA的基础知识然后自己编写解决方案会更容易

搜索“Excel VBA教程”。有很多可供选择,所以选择一个符合你的学习风格。我更喜欢书。我参观了一个好的图书馆;借用最有前途的Excel VBA Primers在家学习然后买了我喜欢的永久参考书。几个小时学习VBA,你可以解决这个问题,下一个和下一个不浪费时间在网上闲逛,看着你不理解的代码。

考虑一下你的要求。我假设c28=c29=c30=c31就是一个例子。 c31=c32=c33=c34也会引起人们的兴趣。您需要概括您的规范。

我会将c28替换为恰好是VBA语法的Cells(28, "C"),但在此阶段会有任何合适的符号。我想你的意思是:

Cells(RowCurrent, "C") = Cells(RowCurrent+1, "C") And _
Cells(RowCurrent, "C") = Cells(RowCurrent+2, "C") And _
Cells(RowCurrent, "C") = Cells(RowCurrent+3, "C")

表示RowCurrent的所有允许值。

RowCurrent的允许值是多少?如果您有一个标题行,则第一个数据行将为2,因此RowCurrent的最小值将为2。如果RowLast是工作表的最后一行,则RowCurrent的最大值为RowLast – 3

当你说e28:e31时,你的意思是细胞e28,c29,c30和e31已被合并?

您的意思是e28:e31包含.tife28:e31结束.tif吗?你会保留abc.tif.txt吗?编程时,您的规范必须绝对精确。计算机会做你说的不是你的意思。

你说你有很多工作表,你想依次阅读它们中的每一个。我希望任何教程都能解释如何遍历工作簿的所有工作表。或者,这是您可以搜索的问题。如果您有单一要求,通常可以找到合适的匹配。换句话说,搜索D可能很容易,但是搜索A和D并且我很难。

每个工作表都有一个外部循环。您需要找到每个工作表的最后一行。每个行块都有一个内部循环。你需要删除不感兴趣的块。我希望你能学习如何从你的教程中完成每一个。你能把这四种不同的技术放在一起吗?

我只能看到你的要求有一个严重的并发症;你不删除不感兴趣的行,你保持有趣的行。如果检查第2行到第5行并发现它们不符合您的模板,则无法删除它们,因为第3行到第6行可能符合您的模板。我不相信您可能找到任何符合此要求的代码。您必须自己设计解决方案。我有几个建议,但在建议之前我需要对你的确切要求更有信心。