excel - 在 VBA 的公式中使用 LEFT & FIND

标签 excel vba excel-formula

我目前使用带有 2 个工作表的工作簿,其中一个包含原始数据(VariantMetrics-Filtered),如下所示:

c.1000T>A;c.1000T>A;c.955T>A
另一个包含一个组合“LEFT”和“FIND”的公式,它允许我只抓取数据的第一部分,直到第一个分号。当前的公式如下所示:
=IFERROR(LEFT('VariantMetrics-Filtered'!C2,FIND(";",'VariantMetrics-Filtered'!C2)-1),'VariantMetrics-Filtered'!C2)

我想使用 VBA 宏来使事情更清洁,因为公式引用了单元格,这不是最佳的。
我想出了下面的代码,但我收到一个错误:预期:“;”的语句结束。
我不明白为什么,因为我认为“LEFT”的语法是正确的。
Sub Remove_duplicates()
'
'

  Dim cell As Range
 
  Set cell = Range("D2:D4000")
    cell.Formula = IFERROR(Left(ActiveCell, Find(";", ActiveCell) - 1),ActiveCell)
    
    
End Sub
任何帮助,将不胜感激

最佳答案

你的公式应该是这样的。它必须是一个字符串,并且字符串中的引号需要加倍,如 …Find("";""… 所示。

cell.Formula = "=IFERROR(Left(" & ActiveCell.Address & ", Find("";""," & ActiveCell.Address & ") - 1)," & ActiveCell.Address & ")"
ActiveCell可能是这里的一个问题。我认为您应该将其替换为 Range("D2:D4000") 的第一个单元格例如 C2 .
使用cell.Resize(1, 1).Offset(ColumnOffset:=-1).Address(False, False)而不是 ActiveCell.Address以上。

关于excel - 在 VBA 的公式中使用 LEFT & FIND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71955904/

相关文章:

excel - 范围公式最后一行

ms-access - 重写多个表中的字段名称 - 跳过缺失的字段

excel - 跨表搜索和条件替换

vba - 识别分组单词中的大写字母并插入逗号和空格

vba - 在工作表值中查找数组数据

excel - 工作表不存在时的错误处理

EXCEL - LAMBDA 函数的奇怪行为

powershell - 将每个都有多个工作表的多个Excel工作簿转换为CSV:如何提取由公式构造的URL?

excel - 运行时错误: '1004' on Range AutoFilter

vba - vb.net如何退出递归循环