Excel VBA查找方法出错了?

时间:2017-12-13 10:13:54

标签: excel vba excel-vba find

我的工作表

我在一段时间内开发了一些依赖于相同宏的工作表。 它将找到标题,并复制所选列中的列。

工作表用于比较两组不同的数据,而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

我的目标

我希望这个公式返回两个不同的单元格和列结果。 “查找”功能应返回两组不同的单元格,因为名称在某种程度上是不同的。

有人可以解释为什么“查找”不会搜索整个名称,而只搜索它的位数吗?

请让我知道,非常感谢您的回答:)

1 个答案:

答案 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)

它应该按预期工作。