【发布时间】:2016-04-15 23:08:54
【问题描述】:
我需要写一个宏。
我有一个大约 30000 行的工作簿(每天更改)。
我需要在 (A) 列的单元格中的字符串中搜索表达式“TRADE”
如果单元格内的字符串包含表达式 TRADE 我需要将 (B) 列(同一行)中相关单元格中的字符串更改为表达式“TRADEIN”
如果条件不满足,列 (B) 中的相关单元格需要保持不变
到目前为止我学到了什么:
Formula =IF(ISNUMBER(FIND("TRADE", A1 )), 1, 2) 仅当直接放在单元格内并在 Excel 中复制时才会相应地更改相邻单元格的值。
当我尝试将字符串作为结果时,问题就开始了
Formula: =IF(ISNUMBER(FIND("TRADE", A1 )), "TRADEIN", "") 不起作用 ->错误
Formula: =IF(ISNUMBER(FIND("TRADE", A1 )), ""TRADEIN"", "") 不起作用->错误
然后,任何试图让我的宏从 VBA 将更复杂的公式插入单元格的尝试都失败了,即:
以下工作正常:
For i=1 to i=NumberOfRows
ActiveSheet.Cells(i, 2).Formula = "= 2+2"
next i
下面不起作用(同样,如果将公式直接放在单元格中,则公式有效):
For i=1 to i=NumberOfRows
ActiveSheet.Cells(i, 2).Formula = "=IF(ISNUMBER(FIND("TRADE", (i, 1)), 1, 2)"
next i
我认为列出我到目前为止所有失败的尝试是没有意义的(我想有很多无用的行要阅读),但无论如何 - 如果我错了,请纠正我。
我找不到与我的任务一样具体的解决方案,并且在更改网上找到的一些解决方案时遇到了问题,而其他解决方案根本不适合我。也许不完全知道如何以最有效的方式询问我需要的东西。非常基本,如果可以的话,尽量不要错过提议的模块/子程序中的任何声明 - 在我遵循的几个示例之外使用和创建对象和方法时,我还没有信心,或者选择/使用正确的具有兼容方法/功能等的变量类型。
【问题讨论】:
-
有很多方法可以完成你所追求的,正如你在下面的答案中看到的那样,但你知道,如果你想让你的公式在 VBA 中工作,你可以这样写:@ 987654326@。请注意
TRADE中引号周围的打开和关闭"以使 VBA 识别您要在公式中包含 '"s` 以及如何使用&将变量包装到字符串中。 -
我只是想评论一下,对于您的第一个问题,这是一个很好的提出的问题。您提出了一个明确的问题,并展示了您尝试过但无法工作的代码。比很多第一个问题要好。欢迎来到 SO。
-
感谢大家的快速回复。今天将坐下来学习如何根据论坛规则和机制奖励您的努力。关于解决方案,我应该有时间在明天的工作中检查并找出对我的情况最有效的方法。
标签: excel if-statement filtering vba