У меня в документе два листа, во втором листе в столбце «L» некоторые даты обновлены, нужно подставить их в первый, идентифицировать можно по уникальному значению номера в столбцах «B» и «H». Буду Вам очень благодарен за помощь! Спасибо.
У меня в документе два листа, во втором листе в столбце «L» некоторые даты обновлены, нужно подставить их в первый, идентифицировать можно по уникальному значению номера в столбцах «B» и «H». Буду Вам очень благодарен за помощь! Спасибо.alexp21
Спасибо, насколько я понял ваш код подставляет ячейки из одного документа в другой, дело в том что они могут идти не по порядку и строк во втором файле гораздо больше чем в первом, поэтому нужно именно сверять номера в столбцах «B» и «H» и подставлять по ним обновленные даты.
Спасибо, насколько я понял ваш код подставляет ячейки из одного документа в другой, дело в том что они могут идти не по порядку и строк во втором файле гораздо больше чем в первом, поэтому нужно именно сверять номера в столбцах «B» и «H» и подставлять по ним обновленные даты.alexp21
нужно именно сверять номера в столбцах «B» и «H» и подставлять по ним обновленные даты.
A2 - ссылка на ячейку значение из которой ВПР ищет в диапазоне $A$1:$S$1000 на листе 'Сентябрь копия' (если строк больше поставьте вместо 1 000 - 10 000, или сколько там у вас строк). Если находит точное совпадение - возвращает значение из пересечения 12 столбца таблицы и строки, в которой было найдено. Если не находит - возвращает ошибку.
нужно именно сверять номера в столбцах «B» и «H» и подставлять по ним обновленные даты.
A2 - ссылка на ячейку значение из которой ВПР ищет в диапазоне $A$1:$S$1000 на листе 'Сентябрь копия' (если строк больше поставьте вместо 1 000 - 10 000, или сколько там у вас строк). Если находит точное совпадение - возвращает значение из пересечения 12 столбца таблицы и строки, в которой было найдено. Если не находит - возвращает ошибку.SkyPro
A2 - ссылка на ячейку значение из которой ВПР ищет в диапазоне $A$1:$S$1000 на листе 'Сентябрь копия' (если строк больше поставьте вместо 1 000 - 10 000, или сколько там у вас строк). Если находит точное совпадение - возвращает значение из пересечения 12 столбца таблицы и строки, в которой было найдено. Если не находит - возвращает ошибку.
К сожалению значение в документах может быть написано не точно, в столбце "В" после номера написание даты может быть как с точками, так и с запятыми, также в одном документе может иметь формат "число, мес, год", а в другом "число, мес", поэтому в столбце "B" необходимо сверять только номер до "/", а так же номер в столбце "H", и при условии что номера в этих столбцах для обоих документов совпадают, менять дату в листе "сентябрь". доработал таблицу, в ней более точно отображены условия.
A2 - ссылка на ячейку значение из которой ВПР ищет в диапазоне $A$1:$S$1000 на листе 'Сентябрь копия' (если строк больше поставьте вместо 1 000 - 10 000, или сколько там у вас строк). Если находит точное совпадение - возвращает значение из пересечения 12 столбца таблицы и строки, в которой было найдено. Если не находит - возвращает ошибку.
К сожалению значение в документах может быть написано не точно, в столбце "В" после номера написание даты может быть как с точками, так и с запятыми, также в одном документе может иметь формат "число, мес, год", а в другом "число, мес", поэтому в столбце "B" необходимо сверять только номер до "/", а так же номер в столбце "H", и при условии что номера в этих столбцах для обоих документов совпадают, менять дату в листе "сентябрь". доработал таблицу, в ней более точно отображены условия.alexp21
Sub ertert() Dim x, i&, s$ With Sheets("Сентябрь копия") x = .Range("A2:L" & .Cells(Rows.Count, 1).End(xlUp).Row).Value End With With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 1 To UBound(x) s = Split(x(i, 2), "/")(0) & "~" & x(i, 8) .Item(s) = x(i, 12) Next i With Sheets("Сентябрь") x = .Range("A2:L" & .Cells(Rows.Count, 1).End(xlUp).Row).Value End With For i = 1 To UBound(x) s = Split(x(i, 2), "/")(0) & "~" & x(i, 8) x(i, 1) = IIf(.Exists(s), .Item(s), x(i, 12)) Next i End With Sheets("Сентябрь").Range("L2").Resize(UBound(x)).Value = x End Sub
[/vba]
alexp21, попробуйте так: [vba]
Код
Sub ertert() Dim x, i&, s$ With Sheets("Сентябрь копия") x = .Range("A2:L" & .Cells(Rows.Count, 1).End(xlUp).Row).Value End With With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 1 To UBound(x) s = Split(x(i, 2), "/")(0) & "~" & x(i, 8) .Item(s) = x(i, 12) Next i With Sheets("Сентябрь") x = .Range("A2:L" & .Cells(Rows.Count, 1).End(xlUp).Row).Value End With For i = 1 To UBound(x) s = Split(x(i, 2), "/")(0) & "~" & x(i, 8) x(i, 1) = IIf(.Exists(s), .Item(s), x(i, 12)) Next i End With Sheets("Сентябрь").Range("L2").Resize(UBound(x)).Value = x End Sub