Я создаю массив "Checkarray ()" для сбора данных столбца A на рабочем листе "Gun Log". После этого я создаю функцию цикла «For» для данных столбца A на рабочем листе «Инвентаризация оружия». Сравнивая данные в двух листах, я пытался использовать функцию «Совпадение», чтобы найти место сопоставления данных, и переносить соответствующую дату с одного листа на другой.
Программа запускается после некоторой настройки, но не дает правильной даты. Независимо от того, как мне отрегулировать условия, перенос даты всегда «1.10.08», откуда я не знаю, откуда он. Пожалуйста, помогите мне проверить мой код, чтобы увидеть, если я что-то неправильно понял, или дайте мне знать, как это происходит. Меня также смущает, что если в одном листе сопоставлено несколько разных результатов, результатом будет функция соответствия, указанная в конце. Причина, по которой я спрашиваю об этом, заключается в том, что в рабочем листе «Журнал орудий» для каждого пистолета есть несколько совпадающих результатов, и я подозреваю, что именно здесь возникла ошибка.
Ваша помощь высоко ценится.
Я создаю массив "Checkarray ()" для сбора данных столбца A на рабочем листе "Gun Log". После этого я создаю функцию цикла «For» для данных столбца A на рабочем листе «Инвентаризация оружия». Сравнивая данные в двух листах, я пытался использовать функцию 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