用于日期匹配的匹配功能无法正常工作

时间:2019-07-01 12:55:24

标签: excel vba

我创建一个数组“ Checkarray()”来收集工作表“ Gun Log”中的A列数据。之后,我为工作表“ Gun Inventory”中的A列数据创建“ For”循环函数。通过比较两个工作表中的数据,我试图使用Match函数查找数据匹配的位置,然后将相应的日期从一个工作表转移到另一个工作表。

程序经过一些调整后运行,但是没有给出正确的日期。无论我如何调整条件,日期传输始终为“ 10/1/2018”,我不知道它来自哪里。请帮助我检查代码,看看我是否误解了某个地方,或者让我知道这是如何发生的。我也很困惑,如果在一个工作表中有多个不同的结果匹配,该结果将在最后给出匹配功能。我之所以这样问,是因为在每把枪的“枪支记录”工作表中,有几个匹配的结果,我怀疑这是造成错误的原因。

我们非常感谢您的协助。

我创建一个数组“ Checkarray()”来收集工作表“ Gun Log”中的A列数据。之后,我为工作表“ Gun Inventory”中的A列数据创建“ For”循环函数。通过比较两个工作表中的数据,我试图使用Match函数查找数据匹配的位置,然后将相应的日期从一个工作表转移到另一个工作表。

Private Sub submitBt_Click()

Dim i As Integer
Dim c As Long
Dim g As Long

Dim CheckArray() As String


With ThisWorkbook.Sheets("Gun Log")
    For c = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
        ReDim Preserve CheckArray(c - 1)
        CheckArray(c - 1) = .Cells(c, "A").Value
    Next c

End With

    For g = 1 To UBound(CheckArray) Step 1
        If UCase(CheckArray(g)) = UCase(.Cells(i, "A")) Then
            .Cells(i, "E") = Worksheets("Gun Log").Cells(Application.Match(CheckArray(g), .Columns(1)) + 1, "B").Value
            Debug.Print Application.Match(CheckArray(g), .Columns(1))
            Debug.Print Worksheets("Gun Log").Cells(Application.Match(CheckArray(g), .Columns(1)) + 1, "B").Value
        End If
    Next g

    Next i 

End With


End Sub

1 个答案:

答案 0 :(得分:0)

尝试使用Match()的所有参数,以确保您具有完全匹配。

您可能会部分匹配,这就是为什么只有一个输出的原因。您使用过:

Worksheets("Gun Log").Cells(Application.Match(CheckArray(g), .Columns(1)) + 1, "B").Value
'AND
Application.Match(CheckArray(g), .Columns(1))

match的第三个参数是是否应该完全匹配,因此请尝试:

Worksheets("Gun Log").Cells(Application.Match(CheckArray(g), .Columns(1), 0) + 1, "B").Value
'AND
Application.Match(CheckArray(g), .Columns(1), 0)

我添加的“ 0”(第三个参数)表示您需要完全匹配。