Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Копирование из одной книги в другую со сдвигом (offset), VBA поиск
 
Вопрос решен. Определил адрес первой ячейки для копирования Row и Column и такое же для первой ячейки для вставки и через систему координат отнял их и получил адрес для вставки.
Копирование из одной книги в другую со сдвигом (offset), VBA поиск
 
Вставка правильно работает, он копирует не то, что надо. Вот пример двух файлов набросал. Сопоставляем исполнителя с его альбомом. Надо взять массив в общей книге(исполнителей взять) и выбрать куда вставлять. Потом во второй книге(откуда берем значения) тоже выбрать массив и первое для копирования.
Копирование из одной книги в другую со сдвигом (offset), VBA поиск
 
Здравствуйте, помогите разобраться. Есть две книги 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


Изменено: scr - 06.10.2018 18:02:18
Поиск значения переменной ячейки, и копирование в другую книгу, VBA поиск
 
спасибо за ответ, но несколько не то. Мне нужно, именно как в примере, но только, что бы макрос воспринимал переменную в ячейке, что бы в поле поиска what, не прописывать имя оператора.
Поиск значения переменной ячейки, и копирование в другую книгу, VBA поиск
 
попробовал ваш вариант, не получилось, мне нужно, что бы если нет такого оператора, он продолжал цикл, до конца. Вот пример
Поиск значения переменной ячейки, и копирование в другую книгу, VBA поиск
 
Всем привет! попытаюсь объяснить свою ситуацию. Есть два файла, "общая таблица" и файл "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
Изменено: scr - 26.10.2017 21:49:09
Страницы: 1
Наверх