Здравствуйте, помогите разобраться. Есть две книги 1(основная) и 2. Надо во 2 книге найти какое - то слово, которое есть в книге 1, выделить его,сдвинуться на определенное количество ячеек в сторону(сдвиг должен указывать сам пользователь) после чего скопировать это значение и перенести его в первую книгу тоже со сдвигом (офсетом) который задается пользователем. Мой макрос в общую (1 книгу) вставляет правильно, но копирует не правильно, он копирует (во второй книге) по адресу ячейки которая находиться в общей(1) книге. Например если имя "Иван" в 1 книге находиться по адресу А1, а во второй книге по адресу А1 будет "Костя", а "Иван" будет по адресу А46, он мне скопирует "Костя" и вставит в 1 книгу в А1. Помогите допилить его, что бы правильно копировалось.Тоесть я хочу, что бы можно было копировать любую информацию, но что бы офсет запрашивался у пользователя, а не редактировать через код. Постарался максимально понятно объяснить задумку.
Код
Sub Копирование()
Dim Searching As Range
File = Application.GetOpenFilename _
("Книга что ищем и куда потом копируем (*.xls*),*.xls*", False)
Workbooks.Open File
Firstbook = ActiveWorkbook.Name ' присваивает переменной книгу из которой берем
Set Firstcopy = Application.InputBox("Укажите ЧТО искать:", "Запрос данных", Selection.Address, Type:=8)
Set Firstpaste = Application.InputBox("Укажите куда вставлять результат, только одну ячейку:", Selection.Address, Type:=8)
File2 = Application.GetOpenFilename _
("Книга откуда копируем значение (*.xls*),*.xls*", False)
Workbooks.Open File2
Secondbook = ActiveWorkbook.Name
Set Secondcopy = Application.InputBox("Укажите ЧТО искать ВСЕ :", "Запрос данных", Selection.Address, Type:=8)
Set Secondpaste = Application.InputBox("Ячейка с первым копируемым значением, только одна:", Selection.Address, Type:=8)
For k = 1 To 65
Windows(Secondbook).Activate
Set Searching = Secondcopy.Find(What:=Firstcopy(k), MatchCase:=True, LookAt:=xlWhole)
If Searching Is Nothing Then
Else:
Secondpaste.Select
ActiveCell.Offset(k - 1).Copy ' сдвиг для копирования. Берет номер ячейки с первого файла, копирует не правильно.
Windows(Firstbook).Activate
Set Searching = Firstcopy.Find(What:=Firstcopy(k), MatchCase:=True, LookAt:=xlWhole)
Firstpaste.Select ' сдвиг для вставки
ActiveCell.Offset(k - 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False ' сдвиг для вставки. Вставка работает правильно, с нее берется копирование.
End If
Windows(Secondbook).Activate
Next k
End Sub
Всем привет! попытаюсь объяснить свою ситуацию. Есть два файла, "общая таблица" и файл "23". В файле "общая таблица" есть список операторов, но они не все есть в файлике "23(этот файлик всегда выгружается разный, по дням, с разными именами операторов, которые для таблицы мне не нужны)" Написал вот такой макрос для таблицы, но если операторов будет много(в общей таблице), прописывать каждого вручную это будет долго. Можно ли как то, указать где брать значение которое нужно искать, например из книги "общая таблица" ячейка А1 и т.д, или диапазон ячеек, что бы не прописывать это вручную? вот код, и такой отрывок по каждому оператору. Если плохо объяснил, могу приложить файл, для большей наглядности.
Код
Sub Общий()
Dim Operator As Range
Windows("общая таблица Октябрь.xlsx").Activate
Windows("23.xls").Activate
Set Operator = Range("A8:A5689").Find(What:="Ира", MatchCase:=True, LookAt:=xlWhole) 'тут меняется имя оператора
If Operator Is Nothing Then
Else: Operator.Select
ActiveCell.Offset(0, 1).Copy
Windows("общая таблица Октябрь.xlsx").Activate
Range("C6").Select 'это тоже каждый раз прописывается в ручную через Replace All
'так как адрес ячейки меняется, для Иры это A6(21), B6(22), C6(23), для другого оператора А7(21), B7(22) и т.д
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End Sub