我的工作表
我在一段时间内开发了一些依赖于相同宏的工作表。 它将找到标题,并复制所选列中的列。
工作表用于比较两组不同的数据,而VBA中的查找功能经常使用。
我的问题
问题在于Find
函数,而它引用了同一列,有两个不同的名称,这些名称略有比较。
它发生在两列中,在某种程度上具有名称比较,如下所示:
Sub CopyPasteDataLookingForHeader()
Dim sht As Worksheet
Set sht = Sheets("Put in data")
'I'm trying to find the column header Total Lineamount within my sheet
FindTotalLineVAT = sht.Range("1:1").Find("Total Lineamount").Address(False, False, xlA1)
TotalLineVAT = Application.WorksheetFunction.Substitute(FindTotalLineVAT, 1, "")
'FindTotalLineVAT will return Cell "J1"
'TotalLineVAT will return column "J"
'I'm trying to find the column header Total Lineamount excl VAT within my sheet
FindTotalLineXVAT = sht.Range("1:1").Find("Total Lineamount excl VAT").Address(False, False, xlA1)
TotalLineXVAT = Application.WorksheetFunction.Substitute(FindTotalLineXVAT, 1, "")
'FindTotalLineXVAT will return Cell "J1"
'TotalLineXVAT will return column "J"
End Sub
我的目标
我希望这个公式返回两个不同的单元格和列结果。 “查找”功能应返回两组不同的单元格,因为名称在某种程度上是不同的。
有人可以解释为什么“查找”不会搜索整个名称,而只搜索它的位数吗?
请让我知道,非常感谢您的回答:)
答案 0 :(得分:1)
您得到两倍相同的结果,默认情况下LookAt
函数中的Find
参数设置为xlPart
。
尝试在LookAt
函数中将xlWhole
参数设置为Find
,如下所示:
FindTotalLineVAT = sht.Range("1:1").Find("Total Lineamount", Lookat:=xlWhole).Address(False, False, xlA1)
FindTotalLineXVAT = sht.Range("1:1").Find("Total Lineamount excl VAT", Lookat:=xlWhole).Address(False, False, xlA1)
它应该按预期工作。