Я постараюсь быть максимально ясным. Вложенные циклы предназначены для go через исправленный столбец InTbl и поиска любой ячейки со значением в.
Затем она также предназначена для l oop через каждую строку таблицы кодов активов через второй столбец списка (специально для кода актива) и проверить его по коду актива во входной таблице (со ссылкой на строку i)
Как только он найдет строку с ссылкой на код актива, соответствующую ссылке i, он должен опубликовать значение из исправленного столбца в смещение ячейки таблицы Asset.
Основная проблема, которую я получаю, заключается в том, что ни одно из значений не копируется, думаю, что-то не так в части код
For c = 1 To LastAss
If AsTbl.DataBodyRange(c, 2).Value = InTbl.DataBodyRange(i, 4).Value Then
AsTbl.DataBodyRange(c, 2).Offset(0, 6).Value = InTbl.DataBodyRange(1, 4).Value
End If
Next
Но я не могу сказать, какой бит неправильный.
В любом случае, пожалуйста, найдите мой код ниже, есть какие-нибудь идеи? или это должно быть сделано иначе?
Dim InTbl As ListObject, i As Long, LastRow As Long, AmendedCCY, AsTbl As ListObject, c As Long, AssCode As Range, LastAss As Long 'Defines all variables
Set InTbl = ThisWorkbook.Sheets("Input").Range("Input").ListObject ' Sets inTbl as the input table's data without headings
Set AmendedCCY = InTbl.ListColumns(4).DataBodyRange ' Sets variable as spcifically the amended column in the input table
Set AsTbl = ThisWorkbook.Sheets("Asset List").Range("AssListTab").ListObject 'Sets variable as the full asset table
Set AssCode = AsTbl.ListColumns(2).DataBodyRange
LastRow = AmendedCCY.Rows.Count 'Sets variable as the number of rows in the data range of the input table (or as the number of assets)
LastAss = AssCode.Rows.Count
For i = 1 To LastRow 'For each iteration from one to the number of all rows.
If Not IsEmpty(InTbl.DataBodyRange(i, 4).Value) Then 'If the cell in the amended column is not empty then
For c = 1 To LastAss
If AsTbl.DataBodyRange(c, 2).Value = InTbl.DataBodyRange(i, 4).Value Then
AsTbl.DataBodyRange(c, 2).Offset(0, 6).Value = InTbl.DataBodyRange(1, 4).Value
End If
Next
End If
Next 'Go to next iteration
End Sub