Обращаюсь к вам за помощью. Сразу оговорюсь: поиск использовал, однако нужного решения не нашел, либо оказался неспособен адаптировать схожее решение под свои цели.
Жена каждый месяц выполняет большие объемы работы, вручную перегоняя данные из одной книги в другую. Дабы упростить труд, нужен макрос (макрос ли? пока назовем это так) следующего характера.
Основные задачи 1. Имеются две книги, допустим "книга А" и "книга Б". 2. В "книге Б" имеется список фамилий (в столбце "ФИО") и суммы (в столбце "Отсюда"). В книге "А" тоже имеется список фамилий ("ФИО") и множество других данных (которые нужно сохранить нетронутыми). Также там имеется пустой столбец "Сюда", в который нужно перенести суммы из книги "Б", так, чтобы суммы соответствовали фамилиям (получатели сумм не перепутались). 3. Проблема 1: фамилии в разных книгах отсортированы по-разному. Кроме того, в одной книге могут быть указаны только фамилии и инициалы, а в другой книге к фамилиям указываются еще и дополнительные данные (в той же ячейке). То есть, потребуется поиск по маске (только фамилия работника). 4. Проблема 2: в книге "А" может НЕ БЫТЬ некоторых фамилий из книги "Б". В этом случае надо, чтобы макрос выдал предупреждение. Если это возможно - со списком отсутствующих в книге "А" фамилий. 5. Проблема 3 (опционально): в книге "А" некоторые фамилии могут повторяться. В этом случае было бы здорово, если бы макрос делал вставку только в первом случае, или хотя бы предупреждал об этом. Но это не обязательно. Допустимо, чтобы вставка делалась и при каждом совпадении.
Если коротко: нужен макрос, который выдернет столбца "Отсюда" книги "Б" суммы и перенесет их в столбец "Сюда" книги "А", ориентируясь на фамилии в столбцах "ФИО".
Не имею права приложить настоящие файлы, поэтому склепал макеты для примера, с учетом всех обозначенных выше "проблем". Рассчитываю на то, что моих скудных знаний хватит на то, чтобы изменить номера столбцов и прочее, если кто-нибудь предложит решение.
Буду очень благодарен за помощь.
Добрый вечер, уважаемые знатоки Excel и VBA
Обращаюсь к вам за помощью. Сразу оговорюсь: поиск использовал, однако нужного решения не нашел, либо оказался неспособен адаптировать схожее решение под свои цели.
Жена каждый месяц выполняет большие объемы работы, вручную перегоняя данные из одной книги в другую. Дабы упростить труд, нужен макрос (макрос ли? пока назовем это так) следующего характера.
Основные задачи 1. Имеются две книги, допустим "книга А" и "книга Б". 2. В "книге Б" имеется список фамилий (в столбце "ФИО") и суммы (в столбце "Отсюда"). В книге "А" тоже имеется список фамилий ("ФИО") и множество других данных (которые нужно сохранить нетронутыми). Также там имеется пустой столбец "Сюда", в который нужно перенести суммы из книги "Б", так, чтобы суммы соответствовали фамилиям (получатели сумм не перепутались). 3. Проблема 1: фамилии в разных книгах отсортированы по-разному. Кроме того, в одной книге могут быть указаны только фамилии и инициалы, а в другой книге к фамилиям указываются еще и дополнительные данные (в той же ячейке). То есть, потребуется поиск по маске (только фамилия работника). 4. Проблема 2: в книге "А" может НЕ БЫТЬ некоторых фамилий из книги "Б". В этом случае надо, чтобы макрос выдал предупреждение. Если это возможно - со списком отсутствующих в книге "А" фамилий. 5. Проблема 3 (опционально): в книге "А" некоторые фамилии могут повторяться. В этом случае было бы здорово, если бы макрос делал вставку только в первом случае, или хотя бы предупреждал об этом. Но это не обязательно. Допустимо, чтобы вставка делалась и при каждом совпадении.
Если коротко: нужен макрос, который выдернет столбца "Отсюда" книги "Б" суммы и перенесет их в столбец "Сюда" книги "А", ориентируясь на фамилии в столбцах "ФИО".
Не имею права приложить настоящие файлы, поэтому склепал макеты для примера, с учетом всех обозначенных выше "проблем". Рассчитываю на то, что моих скудных знаний хватит на то, чтобы изменить номера столбцов и прочее, если кто-нибудь предложит решение.
нужен макрос, который выдернет столбца "Отсюда" книги "Б" суммы и перенесет их в столбец "Сюда" книги "А", ориентируясь на фамилии в столбцах "ФИО".
Макрос в стандартный модуль книги_В [vba]
Код
Sub iSumma() Dim i As Long Dim iLastRow As Long Dim iLR As Long Dim FoundCell As Range Dim FAdr As String Dim FIO As String Dim Reply As Integer With Workbooks("Kniga_A.xls").Worksheets("Лист1") iLR = .Cells(.Rows.Count, "B").End(xlUp).Row .Range("D3:D" & iLR).ClearContents iLastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To iLastRow If Not Cells(i, "A").Font.Bold = True Then FIO = Split(Cells(i, "A"), " ")(0) & " " & Left(Split(Cells(i, "A"), " ")(1), 1) & "." _ & Left(Split(Cells(i, "A"), " ")(2), 1) & "." Set FoundCell = .Columns(2).Find(FIO, , xlValues, xlPart) If Not FoundCell Is Nothing Then FAdr = FoundCell.Address Do .Cells(FoundCell.Row, "D") = Cells(i, "B") Set FoundCell = .Columns(2).FindNext(FoundCell) Loop While FoundCell.Address <> FAdr Else Reply = MsgBox("В книге_А нет фамилии: " & Cells(i, "A") & vbCrLf & "Добавить ?", vbYesNo) If Reply = vbYes Then iLR = .Cells(.Rows.Count, "B").End(xlUp).Row + 1 .Cells(iLR, "B") = FIO 'ФИО .Cells(iLR, "D") = Cells(i, "B") 'Отсюда End If End If End If Next End With End Sub
[/vba] Обе книги должны быть открыты!!!
Цитата
нужен макрос, который выдернет столбца "Отсюда" книги "Б" суммы и перенесет их в столбец "Сюда" книги "А", ориентируясь на фамилии в столбцах "ФИО".
Макрос в стандартный модуль книги_В [vba]
Код
Sub iSumma() Dim i As Long Dim iLastRow As Long Dim iLR As Long Dim FoundCell As Range Dim FAdr As String Dim FIO As String Dim Reply As Integer With Workbooks("Kniga_A.xls").Worksheets("Лист1") iLR = .Cells(.Rows.Count, "B").End(xlUp).Row .Range("D3:D" & iLR).ClearContents iLastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To iLastRow If Not Cells(i, "A").Font.Bold = True Then FIO = Split(Cells(i, "A"), " ")(0) & " " & Left(Split(Cells(i, "A"), " ")(1), 1) & "." _ & Left(Split(Cells(i, "A"), " ")(2), 1) & "." Set FoundCell = .Columns(2).Find(FIO, , xlValues, xlPart) If Not FoundCell Is Nothing Then FAdr = FoundCell.Address Do .Cells(FoundCell.Row, "D") = Cells(i, "B") Set FoundCell = .Columns(2).FindNext(FoundCell) Loop While FoundCell.Address <> FAdr Else Reply = MsgBox("В книге_А нет фамилии: " & Cells(i, "A") & vbCrLf & "Добавить ?", vbYesNo) If Reply = vbYes Then iLR = .Cells(.Rows.Count, "B").End(xlUp).Row + 1 .Cells(iLR, "B") = FIO 'ФИО .Cells(iLR, "D") = Cells(i, "B") 'Отсюда End If End If End If Next End With End Sub
Должно с закрытой книгой_В работать, но обе книги должны быть в одной папке. Если фамилия не найдена, в ячейке с суммой будет отображаться "0" P.S. Проглядел, не учел п.4 - отсутствующие фамилии в книге_А. Наверное, спать пора идти
Здравствуйте! Попробуйте в Книга_А в "D3" и протянуть вниз:
Должно с закрытой книгой_В работать, но обе книги должны быть в одной папке. Если фамилия не найдена, в ячейке с суммой будет отображаться "0" P.S. Проглядел, не учел п.4 - отсутствующие фамилии в книге_А. Наверное, спать пора идти _Igor_61
Сообщение отредактировал _Igor_61 - Пятница, 22.09.2017, 00:26
Да, я Вас не предупредил: в формуле стиль ссылок "А1"; а в Вашем файле - R1C1, поэтому формула не работает. И оба файла должны находиться в одной и той же папке. Посмотрите вариант (приложенные файлы), но конечно макрос от Kuzmich в пользовании намного удобней.
Да, я Вас не предупредил: в формуле стиль ссылок "А1"; а в Вашем файле - R1C1, поэтому формула не работает. И оба файла должны находиться в одной и той же папке. Посмотрите вариант (приложенные файлы), но конечно макрос от Kuzmich в пользовании намного удобней._Igor_61