[英]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.