Доброго времени суток! Скажу сразу, ВПР не подходит, нужен макрос В одной книге (2015_12_17_База.xlsx) необходимо найти в колонке "А" значение например "А зори здесь тихие" (А8) и скопировать значение ячейки "35004,558" (D8), это значение необходимо вставить в другую Книгу (Периодика.xlsm) на лист "Периодика", где в колонке "В" найти такое же значение "А зори здесь тихие" (В4) и вставить значение "35004,558" рядом в ячейку "С4" и закрасить его красным цветом. Если значение не найдено, перейти к следующей ячейке. Когда дошли до конца таблицы, закрыть книгу 2015_12_17_База.xlsx
Еще один важный момент, название файла 2015_12_17_База.xlsx отличается датами, тоесть два файла будут всегда в одной папке, но название будет иметь такой формат "ГГГГ_ММ_ДД_База.xlsx"
Доброго времени суток! Скажу сразу, ВПР не подходит, нужен макрос В одной книге (2015_12_17_База.xlsx) необходимо найти в колонке "А" значение например "А зори здесь тихие" (А8) и скопировать значение ячейки "35004,558" (D8), это значение необходимо вставить в другую Книгу (Периодика.xlsm) на лист "Периодика", где в колонке "В" найти такое же значение "А зори здесь тихие" (В4) и вставить значение "35004,558" рядом в ячейку "С4" и закрасить его красным цветом. Если значение не найдено, перейти к следующей ячейке. Когда дошли до конца таблицы, закрыть книгу 2015_12_17_База.xlsx
Еще один важный момент, название файла 2015_12_17_База.xlsx отличается датами, тоесть два файла будут всегда в одной папке, но название будет иметь такой формат "ГГГГ_ММ_ДД_База.xlsx"akaDemik
Kuzmich, не совсем понял вопрос... надо из файла *_База.xlsx перенести значения столбца D в другой файл Периодика.xlsm(где будет находится макрос), в столбец С, но т.к. строки у этих 2 файлов не совпадают, необходимо заполнять их построчно. Например когда макрос доходит до значения "Парфюмер", которого нет во втором файле, надо пропускать и переходить на другую строчку. Тоже самое и со вторым файлом, в нем есть значение "Космо", которого нет в первом, его пропускаем и переходим к следующей строчке
Kuzmich, не совсем понял вопрос... надо из файла *_База.xlsx перенести значения столбца D в другой файл Периодика.xlsm(где будет находится макрос), в столбец С, но т.к. строки у этих 2 файлов не совпадают, необходимо заполнять их построчно. Например когда макрос доходит до значения "Парфюмер", которого нет во втором файле, надо пропускать и переходить на другую строчку. Тоже самое и со вторым файлом, в нем есть значение "Космо", которого нет в первом, его пропускаем и переходим к следующей строчкеakaDemik
У вас в файле Периодика есть список книг, которые надо найти в Базе и подтянуть значения веса(кг). Макросом проходим циклом по этому списку, в котором есть ячейки Книги и Журналы, по которым в базе есть цифры. Вот эти цифры нужны вам в файле Периодика?
У вас в файле Периодика есть список книг, которые надо найти в Базе и подтянуть значения веса(кг). Макросом проходим циклом по этому списку, в котором есть ячейки Книги и Журналы, по которым в базе есть цифры. Вот эти цифры нужны вам в файле Периодика?Kuzmich
Kuzmich, спасибо, но можно без диалогового окна выбора файла? чтоб макрос работал в фоне... и не надо удалять данные в таблице, если они есть (остаются старые данные, без наименования "Книга не найдена")
Kuzmich, спасибо, но можно без диалогового окна выбора файла? чтоб макрос работал в фоне... и не надо удалять данные в таблице, если они есть (остаются старые данные, без наименования "Книга не найдена")akaDemik
Я такого не понимаю. Макрос работает по какому-то событию, либо нажатие кнопки, либо по изменению значения в какой-либо ячейке. У вас на листе Периодика есть список книг, по которым надо подтянуть данные из базы. Вот макрос и просматривает весь этот список и, если такое название есть в базе, то подтягивает значение из соседней ячейки. Если вы предполагаете другой алгоритм, то опишите его.
Цитата
чтоб макрос работал в фоне
Я такого не понимаю. Макрос работает по какому-то событию, либо нажатие кнопки, либо по изменению значения в какой-либо ячейке. У вас на листе Периодика есть список книг, по которым надо подтянуть данные из базы. Вот макрос и просматривает весь этот список и, если такое название есть в базе, то подтягивает значение из соседней ячейки. Если вы предполагаете другой алгоритм, то опишите его.Kuzmich
Если вы предполагаете другой алгоритм, то опишите его.
есть макрос в таком виде: [vba]
Код
Sub IMPORT() Dim srcBook Set wb = ThisWorkbook Set wf = WorksheetFunction ' Открываем Dim oFileSystemObject As Object: Set oFileSystemObject = CreateObject("Scripting.FileSystemObject") If oFileSystemObject.FileExists(wb.Path & "\2015_12_21_Base.xls") Then ' 2015_12_21 - меняется, надо чтоб была переменная *Base.xls Set srcBook = Workbooks.Open(Filename:=wb.Path & "\2015_12_21_Base.xls", ReadOnly:=True, UpdateLinks:=0) 'Вставляем wb.Sheets("Главная").Range("C7") = wf.Sum(srcBook.Sheets("ZZZ").Range("A3,A7,A9,A11")) wb.Sheets("Главная").Range("C8") = wf.Sum(srcBook.Sheets("ZZZ").Range("B9;D9")) wb.Sheets("Главная").Range("C9") = wf.Sum(srcBook.Sheets("ZZZ").Range("C3,C9,C11")) wb.Sheets("Главная").Range("C7:C9").Font.Color = vbRed srcBook.Close SaveChanges:=False
End Sub
[/vba] нашел похожий макрос, который нужен, но у меня не получается его применить [vba]
Код
Sub Макрос1() Dim sFolder As String, sFiles As String sFolder = ActiveWorkbook.Path sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator) sFiles = Dir(sFolder & "*_База.xls*") Workbooks.Open Filename:=sFolder & sFiles Workbooks(1).Activate
Если вы предполагаете другой алгоритм, то опишите его.
есть макрос в таком виде: [vba]
Код
Sub IMPORT() Dim srcBook Set wb = ThisWorkbook Set wf = WorksheetFunction ' Открываем Dim oFileSystemObject As Object: Set oFileSystemObject = CreateObject("Scripting.FileSystemObject") If oFileSystemObject.FileExists(wb.Path & "\2015_12_21_Base.xls") Then ' 2015_12_21 - меняется, надо чтоб была переменная *Base.xls Set srcBook = Workbooks.Open(Filename:=wb.Path & "\2015_12_21_Base.xls", ReadOnly:=True, UpdateLinks:=0) 'Вставляем wb.Sheets("Главная").Range("C7") = wf.Sum(srcBook.Sheets("ZZZ").Range("A3,A7,A9,A11")) wb.Sheets("Главная").Range("C8") = wf.Sum(srcBook.Sheets("ZZZ").Range("B9;D9")) wb.Sheets("Главная").Range("C9") = wf.Sum(srcBook.Sheets("ZZZ").Range("C3,C9,C11")) wb.Sheets("Главная").Range("C7:C9").Font.Color = vbRed srcBook.Close SaveChanges:=False
End Sub
[/vba] нашел похожий макрос, который нужен, но у меня не получается его применить [vba]
Код
Sub Макрос1() Dim sFolder As String, sFiles As String sFolder = ActiveWorkbook.Path sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator) sFiles = Dir(sFolder & "*_База.xls*") Workbooks.Open Filename:=sFolder & sFiles Workbooks(1).Activate