我目前使用带有 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/