Если есть свернутые строки макрос не срабатывает!

12.09.2017 11:06:06
Прикрепляю два файла: отчеты и план. Эти два файла сравниваются по двум столбцам (B и C) при совпадении информация из отчеты переносится в левую часть плана. Но при выполнении макроса (после нажатия кнопки "Синхронизация данных") формулы в файле план преобразуются в значения (пример столбец Z). Также, оказывается бывает такое что столбцы B и C совпадают в нескольких строчках (пример в файле отчет строка 5 и 6) и берутся последние, хотелось бы, в таких случаях, чтобы данные обеех строчек переносились, только ещё левее.
Извините, если коряво объяснил
Изменено: |
|
|
11.09.2017 10:37:10
Уважаемые форумчане! Нужна помощь с доработкой макроса! В предыдущей теме
1. При переносе данных, книга куда переносятся данные оцифровывается (формулы преобразуются в числа), 2. Выяснилось, что может быть вариант при котором совпадают несколько раз строки (по двум столбцам), как можно перенести -эти данные ещё дальше (правее). Код которым пользуюсь в данный момент:
|
|||
|
08.09.2017 13:57:21
Уважаемые форумчане! Нужна помощь с доработкой макроса! В предыдущей теме
1. При переносе данных, книга куда переносятся данные оцифровывается (формулы преобразуются в числа), 2. Выяснилось, что может быть вариант при котором совпадают несколько раз строки (по двум столбцам), как можно перенести -эти данные ещё дальше (правее). Пример кода: Sub Синхронизация() Dim sht As Worksheet, sht1 As Worksheet Dim arr(), arr1(), i&, j&, x&, y& Set sht = Workbooks("Книга1.xlsx").Sheets("Лист1") Set sht1 = ThisWorkbook.ActiveSheet With sht i = .Cells(.Rows.Count, "a").End(xlUp).Row j = .Cells(4, .Columns.Count).End(xlToLeft).Column arr = .Range(.Cells(5, "a"), .Cells(i, j)) End With With sht1 i = .Cells(.Rows.Count, "a").End(xlUp).Row arr1 = .Range(.Cells(15, "a"), .Cells(i, 70)) For i = LBound(arr1) To UBound(arr1) For j = LBound(arr) To UBound(arr) If arr1(i, 2) = arr(j, 2) And arr1(i, 3) = arr(j, 3) Then y = 3 For x = UBound(arr1, 2) - 39 To UBound(arr1, 2) arr1(i, x) = arr(j, y) y = y + 1 Next x End If Next j Next i .Range("a15").Resize(UBound(arr1), UBound(arr1, 2)) = arr1 End With End Sub |
|
|
02.08.2017 08:12:04
Nordheim, огромное вам спасибо! Все работает, просто бомба. Не могли бы вы пояснить "в двух словах" где можно менять столбцы которые будут сравниваться и столбцы, которые при совпадении будут переносится.
i = .Cells(.Rows.Count, "a").End(xlUp).Row j = .Cells(4, .Columns.Count).End(xlToLeft).Column Я так понимаю-это столбец А и рядом с ним столбец для сопоставления? Тут не обозначены конкретные столбцы для переноса, переносится все что правее?
Изменено: |
|
|
01.08.2017 10:05:02
Уважаемые форумчане! Помогите с данной проблемой. Суть проблемы состоит в следующем: есть два файла Excel (две книги) Книга1 и Книга2 в которых имеются две таблицы. Необходимо по двум столбцам (Дата и № Договора) путем сопоставления, перенести информацию из Книги 1(Данные1, Данные2, Данные3) в Книгу 2. Читал на различных форумах про функцию ВПР, что необходимо объединять ячейки, что-то непонятно)) Хотя функцией этой иногда пользовался. Пример во вложении.
Изменено: |
|
|