我创建一个数组“ 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
答案 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”(第三个参数)表示您需要完全匹配。