vba - 如何在 VBA 宏中应用 Excel 公式来查找倒数第二个单词

标签 vba excel excel-formula

我对 VBA 很陌生,但已经使用过一些 Excel。我创建了一个公式,它完全满足我的需要:查找单元格中倒数第 N 个单词(主要是倒数第 2 个或倒数第 3 个)。我认为我的主要问题是如何将公式应用于一系列单元格而不覆盖单元格以及如何在 VBA 中使用 Excel 公式。我使用的Excel公式如下

=TRIM(LEFT(RIGHT(" "&SUBSTITUTE(TRIM(A1)," ",REPT(" ",60)),180),60))

这可能不是最有说服力的方式,但在 Excel 中效果很好。将数字 180 更改为 60 将给出最后一个单词,120 将给出倒数第二个单词,依此类推。但在 VBA 中,它给出了第一个语法错误,当我让它在没有参数且仅使用 TRIM(A1) 的情况下运行时,它会覆盖单元格。我使用的代码如下(仅引用A1进行测试):

reportsheet.Range("A1").Formula = "=TRIM(LEFT(RIGHT(" " & SUBSTITUTE(TRIM(A1)," " ,REPT(" ",60)),180),60))"

我的宏搜索并提取 Sheet1 到 Sheet2 中的特定数据。现在我想将这个(或类似的)公式应用于它提取到 Sheet2 的数据。我尝试了很多不同的方法,从使用 VBA 自己的修剪到制作完全自定义的函数。这些似乎都不起作用,我认为这归因于对 Excel 公式和 VBA 如何协同工作的误解。

此外,我正在尝试找到一种方法来查找单元格中唯一的数字并删除其他所有数字。对此的任何帮助也将不胜感激。

编辑:抱歉,大家,我提供的代码中有一个错误,在这两种情况下它都应该引用 A1。

最佳答案

在带引号的字符串中加倍引号或使用替代方案。

reportsheet.Range("A1").Formula = "=TRIM(LEFT(RIGHT("" "" & SUBSTITUTE(TRIM(A20),"" "" ,REPT("" "",60)),180),60))"
'alternative
reportsheet.Range("A1").Formula = "=TRIM(LEFT(RIGHT(char(32) & SUBSTITUTE(TRIM(A20), char(32), REPT(char(32),60)),180),60))"

关于vba - 如何在 VBA 宏中应用 Excel 公式来查找倒数第二个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50598556/

相关文章:

vba - End If 无 block If 错误

vba - 尝试使用 OLEDBConnection 运行时错误 '1004' : Application-defined or object-defined error 运行查询

python - 如何使用 Python 或 R 将 Excel 中带有替代文本的图形导出为 PDF?

excel - VBA 循环永远存在 - 我在哪里可以优化?

vba - 如何防止在检查和删除上一行时跳过行检查?

vba - 当值之一是文本时,Excel VBA 工作表求和函数返回错误

java - 断言部分文本

Excel/GSheets 为动态列表中的重复值添加唯一标志

excel - 为字符分配一个值并在 MS excel 中执行字符串(具有字符)的数学函数(+,-,*,/)

excel - 如何一起使用 Countif 和 Vlookup