繁体   English   中英

日期匹配的匹配功能

[英]Match function for date matchup

我创建一个数组“ Checkarray()”来收集工作表“ Gun Log”中的A列数据。 之后,我为工作表“ Gun Inventory”中的A列数据创建“ For”循环函数。

通过比较两个工作表中的数据,我试图使用Match函数来查找数据匹配的位置,并将相应的日期从一个工作表转移到另一个工作表。

无论我如何调整条件,日期传输始终为“ 10/1/2018”。 我不知道这是哪里来的。

如果在一个工作表中匹配了多个不同的结果,那么匹配函数最后将给出哪个结果? 在每把枪的“枪日志”工作表中,有几个匹配的结果,我怀疑这是错误的原因。

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

尝试使用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”(第三个参数)表示您需要完全匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM