Excel vba поиск в другой книге
Искал похожие темы, но не нашел подходящее решение под свой вопрос.
Если такая тема была - прошу извинить заранее)
Помогите, пожалуйста, в таком вопросе.
Есть исходная книга Эксель, в которой расположено 500 значений в ячейках A1:A500. В той же папке, что и исходная книга, есть множество других книг, в которых есть значения в столбцах от "A" до "D".
Необходимо произвести поиск каждого значения из исходной книги в других книгах, расположеных в папке с исходным файлом и в соседнюю ячейку от исходного значения, добавить имя книги, в которой найдено значение.
Сам в макросах не очень силен, но по по-немногу учусь и кое-что уже понимаю)
Буду очень благодарен за любую помощь в данном вопросе.
Спасибо!
Искал похожие темы, но не нашел подходящее решение под свой вопрос.
Если такая тема была - прошу извинить заранее)
Помогите, пожалуйста, в таком вопросе.
Есть исходная книга Эксель, в которой расположено 500 значений в ячейках A1:A500. В той же папке, что и исходная книга, есть множество других книг, в которых есть значения в столбцах от "A" до "D".
Необходимо произвести поиск каждого значения из исходной книги в других книгах, расположеных в папке с исходным файлом и в соседнюю ячейку от исходного значения, добавить имя книги, в которой найдено значение.
Сам в макросах не очень силен, но по по-немногу учусь и кое-что уже понимаю)
Буду очень благодарен за любую помощь в данном вопросе.
Спасибо! footballplayer
Искал похожие темы, но не нашел подходящее решение под свой вопрос.
Если такая тема была - прошу извинить заранее)
Помогите, пожалуйста, в таком вопросе.
Есть исходная книга Эксель, в которой расположено 500 значений в ячейках A1:A500. В той же папке, что и исходная книга, есть множество других книг, в которых есть значения в столбцах от "A" до "D".
Необходимо произвести поиск каждого значения из исходной книги в других книгах, расположеных в папке с исходным файлом и в соседнюю ячейку от исходного значения, добавить имя книги, в которой найдено значение.
Сам в макросах не очень силен, но по по-немногу учусь и кое-что уже понимаю)
Буду очень благодарен за любую помощь в данном вопросе.
Спасибо! Автор - footballplayer
Дата добавления - 24.01.2017 в 13:12
На просторах интернета нашел файл, который примерно решает описанную выше задачу.
Но в данном файле проблема в том, что он обрабатывает только одно значение, которое можно ввести в поле ввода текста.
Можно ли изменить макрос данного файла, чтобы он обрабатывал циклично ячейки от А1 до А500 и консолидировал все в один файл, а не каждое найденное значение в новую книгу, как сейчас?
Помогите, пожалуйста. Вопрос очень срочный, необходимо решить задачу. Буду очень признателен за помощь.
Спасибо!
На просторах интернета нашел файл, который примерно решает описанную выше задачу.
Но в данном файле проблема в том, что он обрабатывает только одно значение, которое можно ввести в поле ввода текста.
Можно ли изменить макрос данного файла, чтобы он обрабатывал циклично ячейки от А1 до А500 и консолидировал все в один файл, а не каждое найденное значение в новую книгу, как сейчас?
Помогите, пожалуйста. Вопрос очень срочный, необходимо решить задачу. Буду очень признателен за помощь.
Спасибо! footballplayer
Набросал пример того, что необходимо в итоге, с приведением файлов.
К примеру, есть исходный файл (файл Исходный.xlsx). В исходном файле в столбце "A" есть значения от ячейки "A1" до ячейки "A10". В той же папке, где лежит исходный файл, есть множество других книг с разными именами ( к примеру, укажу три книги с именами: Данные1.xlsx, Данные2.xlsx, Данные3.xlsx), но во всех книгах только один лист. В книгах, в которых производится поиск, данные расположены в ячейках "A1:D100".
Необходимо, чтобы макрос произвел поиск всех данных ячеек от "A1" до "A500" из книги Исходный.xlsx в других книгах в той же папке и результатом было бы то, что в в ячейке, соседней к искомой вставлося имя той книги, где найдено искомое значение.
В книги Исходный.xlsx укаал финальный вид, который должен быть после поиска в книгах Данные1, Данные2 и Данные3.
Набросал пример того, что необходимо в итоге, с приведением файлов.
К примеру, есть исходный файл (файл Исходный.xlsx). В исходном файле в столбце "A" есть значения от ячейки "A1" до ячейки "A10". В той же папке, где лежит исходный файл, есть множество других книг с разными именами ( к примеру, укажу три книги с именами: Данные1.xlsx, Данные2.xlsx, Данные3.xlsx), но во всех книгах только один лист. В книгах, в которых производится поиск, данные расположены в ячейках "A1:D100".
Необходимо, чтобы макрос произвел поиск всех данных ячеек от "A1" до "A500" из книги Исходный.xlsx в других книгах в той же папке и результатом было бы то, что в в ячейке, соседней к искомой вставлося имя той книги, где найдено искомое значение.
В книги Исходный.xlsx укаал финальный вид, который должен быть после поиска в книгах Данные1, Данные2 и Данные3. footballplayer
К примеру, есть исходный файл (файл Исходный.xlsx). В исходном файле в столбце "A" есть значения от ячейки "A1" до ячейки "A10". В той же папке, где лежит исходный файл, есть множество других книг с разными именами ( к примеру, укажу три книги с именами: Данные1.xlsx, Данные2.xlsx, Данные3.xlsx), но во всех книгах только один лист. В книгах, в которых производится поиск, данные расположены в ячейках "A1:D100".
Необходимо, чтобы макрос произвел поиск всех данных ячеек от "A1" до "A500" из книги Исходный.xlsx в других книгах в той же папке и результатом было бы то, что в в ячейке, соседней к искомой вставлося имя той книги, где найдено искомое значение.
В книги Исходный.xlsx укаал финальный вид, который должен быть после поиска в книгах Данные1, Данные2 и Данные3. Автор - footballplayer
Дата добавления - 24.01.2017 в 16:05
Как искать / находить значения в другой книге?
В этой статье рассказывается о том, как искать значения и возвращать данные из другой книги, а также как находить / искать значения из другой книги. Здесь я подробно расскажу о трех решениях.
Kutools for Excel's Look for a value in list formula can help you easily vlookup for a value from selection in active sheet or other sheets quickly. Full Feature Free Trial 30-day!
- Reuse Anything: Add the most used or complex formulas, charts and anything else to your favorites, and quickly reuse them in the future.
- More than 20 text features: Extract Number from Text String; Extract or Remove Part of Texts; Convert Numbers and Currencies to English Words.
- Merge Tools : Multiple Workbooks and Sheets into One; Merge Multiple Cells/Rows/Columns Without Losing Data; Merge Duplicate Rows and Sum.
- Split Tools : Split Data into Multiple Sheets Based on Value; One Workbook to Multiple Excel, PDF or CSV Files; One Column to Multiple Columns.
- Paste Skipping Hidden/Filtered Rows; Count And Sum by Background Color ; Send Personalized Emails to Multiple Recipients in Bulk.
- Super Filter: Create advanced filter schemes and apply to any sheets; Sort by week, day, frequency and more; Filter by bold, formulas, comment.
- More than 300 powerful features; Works with Office 2007-2019 and 365; Supports all languages; Easy deploying in your enterprise or organization.
Данные Vlookup и возвращаемые значения из другой книги в Excel
Например, вы создаете таблицу «Покупка фруктов» в Excel, и теперь вам нужно просмотреть фрукты из другой книги и вернуть соответствующие цены, как показано на скриншотах ниже. Здесь я расскажу вам, как решить эту проблему с помощью функции VLOOKKUP в Excel.
1. Откройте обе книги, из которых вы будете просматривать значения и возвращать значения.
2. Выберите пустую ячейку, в которую вы вернете цену, введите формулу = ВПР (B2; [Price.xlsx] Sheet1! $ A $ 1: $ B $ 24,2; FALSE) в него, а затем перетащите его маркер заполнения, чтобы применить эту формулу к диапазону по мере необходимости.
Заметки:
(1) В приведенной выше формуле B2 - это плод, который вы будете искать в другой книге, Price.xlsx указывает имя файла книги, из которой вы будете искать, Sheet1 означает имя листа, из которого вы будете искать, и A $ 1 : $ B $ 24 - это диапазон, из которого вы будете искать. Вы можете изменить их по своему усмотрению.
(2) После закрытия книги, из которой вы искали, формула автоматически обновится до = ВПР (B2; 'W: \ test \ [Price.xlsx] Sheet1'! $ A $ 1: $ B $ 24,2, FALSE) , W: \ test \ - это путь сохранения книги, из которой вы искали.
Пока все цены вернулись правильно, как показано на скриншоте слева. И эти цены будут обновляться автоматически, если исходная книга, которую вы искали, изменилась.
Формула слишком сложна для запоминания? Сохраните формулу как запись Auto Text для повторного использования одним щелчком мыши в будущем! Подробнее . Бесплатная пробная версия |
Данные Vlookup и возвращаемые значения из другой закрытой книги с VBA
Может возникнуть путаница при настройке пути сохранения, имени файла и рабочего листа в функции VLOOKUP. Этот метод позволит легко решить эту проблему с помощью VBA.
1. нажмите другой + F11 клавиши, чтобы открыть окно Microsoft Visual Basic для приложений.
2. Нажмите Вставить > Модули, а затем вставьте ниже код VBA в открывающееся окно модуля.
VBA: данные Vlookup и возвращаемые значения из другой закрытой книги
Внимание: Этот VBA будет возвращать значения в столбце, который находится на 2 столбца позади выбранного столбца. Например, я выбираю столбец B при применении этого VBA, значения возвращаются в столбце D. Если вам нужно изменить столбец назначения, узнайте код xRg.Offset (0, 2) .Formula = xString & GetColumn (xFCell.Column + 1) & "$" & xFCell.Row и заменить 2 на другой номер по мере необходимости.
3. нажмите F5 ключ или щелкните Run кнопку для запуска этого VBA.
4. В открывшемся диалоговом окне укажите диапазон данных, который вы будете искать, и щелкните значок OK кнопку.
5. Теперь выберите книгу, в которой вы будете искать значения в открывшемся диалоговом окне «Выбор книги», и нажмите кнопку Откройте кнопку.
Теперь все выбранные значения ищутся в указанной закрытой книге, и соответствующие значения возвращаются в указанном столбце. Смотрите скриншот:
Как быстро найти значение на нескольких листах или в книгах?
Вы когда-нибудь задумывались о поиске определенного значения на нескольких листах или книгах в Excel? В этом руководстве представлены различные методы решения проблем, связанных с поиском на нескольких листах или поиском в нескольких книгах.
Быстрый поиск значения в нескольких открытых книгах с помощью Kutools for Excel
Поиск значения на нескольких листах книги с помощью функции поиска и замены
С помощью Excel Найти и заменить функция, вы можете найти определенное значение на нескольких листах.
1. Выберите несколько вкладок листов, на которых вы хотите найти значение, удерживая Ctrl и щелкнув листы в Панель вкладок листа по одному. Смотрите скриншот:
2. Затем нажмите Ctrl + F для Найти и заменить окна и введите значение, которое вы хотите найти, в Найти то, что текстовое поле под Найдите Вкладка, а затем нажмите кнопку Найти все кнопку, чтобы просмотреть все результаты. Смотрите скриншот:
Поиск и замена значений на листах и в книгах
Искать значение во всех книгах папки с VBA
Если вы хотите найти значение во всех закрытых книгах из папки, вы можете применить только VBA для его решения.
1. Включите новую книгу и выберите ячейку, затем нажмите Alt + F11 ключи для открытия Microsoft Visual для базовых приложений окно.
2. Нажмите Вставить > Модули и вставьте ниже VBA в новое окно модуля.
VBA: поиск значения во всех книгах папки.
3. Затем нажмите F5 ключа или Run кнопку для выполнения этого VBA и Выберите папку Появится диалоговое окно, напоминающее вам о выборе папки, в которой вы хотите искать значение. Смотрите скриншот:
4. Затем щелкните OK и другое диалоговое окно появляется, чтобы напомнить вам, сколько ячеек было найдено. Смотрите скриншот:
5. Нажмите OK в Закрыть его, и все найденные ячейки будут перечислены на текущем листе с соответствующей информацией.
Наконечник: В приведенном выше VBA вы ищете значение «КТЕ» , и вы можете изменить «КТЕ» из этого xStrSearch на другое значение по мере необходимости.
Быстрый поиск значения в нескольких открытых книгах с помощью Kutools for Excel
Если вы просто хотите найти значение в нескольких открытых книгах, вы можете использовать Kutools для Excel 'продвинутый Найти и заменить утилита.
После бесплатная установка Kutools for Excel, сделайте следующее:
1. В одной из открытых книг щелкните Кутулс > Навигация, а затем нажмите Найти и заменить кнопка идти на Найти и заменить панель. Смотрите скриншот:
2. Затем нажмите Найдите вкладка и введите значение, которое вы хотите найти в Найти то, что текстовое поле, а затем выберите Все книги из В раскрывающийся список и нажмите Найти все чтобы перечислить все найденные ячейки. Смотрите скриншот:
Наконечник:
Работы С Нами Kutools for Excelпродвинутый Найти и заменить Утилита, вы можете искать и заменять значения на выбранных листах в нескольких книгах, во всех книгах, активной книге, активном листе или выборе.
Приветствую! Помогите реализовать такой макрос.
Есть Книга №1, в ней лист с данными. В диапазоне A1:A5000 занесены числовые значения. Рядом с каждой ячейкой расположена кнопка. При нажатии на неё должен начаться поиск этого же значения в отдельной книге "Книга №2" на листе "Лист №1" в диапазоне ячеек B1:B5000. Как только будет совпадение (а оно будет лишь один раз, так как во второй книге значения уникальны), фокус должен встать на эту ячейку в этой книге.
Если проще - в первой книге я завожу инцидент с номером устройства, по клике на кнопку у меня открывается вторая книга и фокус встает на ячейку с этим же номером, где есть полное описание устройства. Для наглядности прикладываю файл.
Приветствую! Помогите реализовать такой макрос.
Есть Книга №1, в ней лист с данными. В диапазоне A1:A5000 занесены числовые значения. Рядом с каждой ячейкой расположена кнопка. При нажатии на неё должен начаться поиск этого же значения в отдельной книге "Книга №2" на листе "Лист №1" в диапазоне ячеек B1:B5000. Как только будет совпадение (а оно будет лишь один раз, так как во второй книге значения уникальны), фокус должен встать на эту ячейку в этой книге.
Если проще - в первой книге я завожу инцидент с номером устройства, по клике на кнопку у меня открывается вторая книга и фокус встает на ячейку с этим же номером, где есть полное описание устройства. Для наглядности прикладываю файл. Venique
Есть Книга №1, в ней лист с данными. В диапазоне A1:A5000 занесены числовые значения. Рядом с каждой ячейкой расположена кнопка. При нажатии на неё должен начаться поиск этого же значения в отдельной книге "Книга №2" на листе "Лист №1" в диапазоне ячеек B1:B5000. Как только будет совпадение (а оно будет лишь один раз, так как во второй книге значения уникальны), фокус должен встать на эту ячейку в этой книге.
Если проще - в первой книге я завожу инцидент с номером устройства, по клике на кнопку у меня открывается вторая книга и фокус встает на ячейку с этим же номером, где есть полное описание устройства. Для наглядности прикладываю файл. Автор - Venique
Дата добавления - 06.11.2014 в 14:57
Venique, здравствуйте.
Для реализации макроса рекомендую сделать только одну кнопку. Её поместить на верхнюю строку. Строку закрепить (через меню "Вид"). Сама кнопка будет работать с выделенной ячейкой. Это избавляет от потрясающей перспективы клонировать кнопку 5 тысяч раз.
Для открытия книги изучите метод Workbooks.Open, для поиска значения - Range( . ).Find. Для "постановки фокуса" достаточно Cells( . ).Select. Где троеточия - ваши специфичные данные.
Venique, здравствуйте.
Для реализации макроса рекомендую сделать только одну кнопку. Её поместить на верхнюю строку. Строку закрепить (через меню "Вид"). Сама кнопка будет работать с выделенной ячейкой. Это избавляет от потрясающей перспективы клонировать кнопку 5 тысяч раз.
Для открытия книги изучите метод Workbooks.Open, для поиска значения - Range( . ).Find. Для "постановки фокуса" достаточно Cells( . ).Select. Где троеточия - ваши специфичные данные. Rioran
Для реализации макроса рекомендую сделать только одну кнопку. Её поместить на верхнюю строку. Строку закрепить (через меню "Вид"). Сама кнопка будет работать с выделенной ячейкой. Это избавляет от потрясающей перспективы клонировать кнопку 5 тысяч раз.
Для открытия книги изучите метод Workbooks.Open, для поиска значения - Range( . ).Find. Для "постановки фокуса" достаточно Cells( . ).Select. Где троеточия - ваши специфичные данные. Автор - Rioran
Дата добавления - 06.11.2014 в 16:36
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, [A1:A5000]) Is Nothing Then
Cancel = True
'.
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, [A1:A5000]) Is Nothing Then
Cancel = True
'.
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, [A1:A5000]) Is Nothing Then
Cancel = True
'.
End If
End Sub
Кстати да, вешать макрос на двойной клик тут будет оптимальнее =) Автор - Rioran
Дата добавления - 07.11.2014 в 09:12
Да, отдельная кнопка оказалась оптимальнее, а вот двойной клик - нет, т.к. в эту ячейку перед поиском ещё и само значение забить надо. Покопался подольше, нежели чем с готовым вариантом, но получилось неплохо. Если кому-то будет полезно, то вот:
'задаём переменные
Dim GCell As Range
Dim Txt$
Dim wBook As Workbook
'что ищем
Txt = ActiveCell.Value
'продолжаем выполнять макрос, иначе без открытой книги он прервётся
On Error Resume Next
'описываем книгу
Set wBook = Workbooks("Book2.xls")
Application.ScreenUpdating = False 'немного ускорим процесс
If wBook Is Nothing Then 'если она не открыта, то открываем её
Workbooks.Open Filename:= _
"\\***\Book2.xls"
Set GCell = Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Workbooks("Book1.xls").Activate
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
Else 'если она открыта
Set GCell = wBook.Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
End If
Exit Sub
End Sub
Макрос ищет выделенное в текущий момент значение ячейки из книги Book1 в книге Book2, в диапазоне B1:B1000. Если совпадение есть - делает фокус на Book2 и подсвечивает ячейку с искомым значением +3 ячейки вправо (у меня там сопроводительная информация лежит). Если совпадения нет - выдаёт ошибку. Если книга не открыта - сначала открывает, а потом уже ищет. Окошко с ошибкой сделал покрасивше, путь можно прописывать вплоть до файла на удалённом сервере. Все кейсы отработал, вроде накладок не возникает, так что можно пользоваться Вешать макрос на отдельную кнопку.
Да, отдельная кнопка оказалась оптимальнее, а вот двойной клик - нет, т.к. в эту ячейку перед поиском ещё и само значение забить надо. Покопался подольше, нежели чем с готовым вариантом, но получилось неплохо. Если кому-то будет полезно, то вот:
'задаём переменные
Dim GCell As Range
Dim Txt$
Dim wBook As Workbook
'что ищем
Txt = ActiveCell.Value
'продолжаем выполнять макрос, иначе без открытой книги он прервётся
On Error Resume Next
'описываем книгу
Set wBook = Workbooks("Book2.xls")
Application.ScreenUpdating = False 'немного ускорим процесс
If wBook Is Nothing Then 'если она не открыта, то открываем её
Workbooks.Open Filename:= _
"\\***\Book2.xls"
Set GCell = Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Workbooks("Book1.xls").Activate
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
Else 'если она открыта
Set GCell = wBook.Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
End If
Exit Sub
End Sub
Макрос ищет выделенное в текущий момент значение ячейки из книги Book1 в книге Book2, в диапазоне B1:B1000. Если совпадение есть - делает фокус на Book2 и подсвечивает ячейку с искомым значением +3 ячейки вправо (у меня там сопроводительная информация лежит). Если совпадения нет - выдаёт ошибку. Если книга не открыта - сначала открывает, а потом уже ищет. Окошко с ошибкой сделал покрасивше, путь можно прописывать вплоть до файла на удалённом сервере. Все кейсы отработал, вроде накладок не возникает, так что можно пользоваться Вешать макрос на отдельную кнопку. Venique
'задаём переменные
Dim GCell As Range
Dim Txt$
Dim wBook As Workbook
'что ищем
Txt = ActiveCell.Value
'продолжаем выполнять макрос, иначе без открытой книги он прервётся
On Error Resume Next
'описываем книгу
Set wBook = Workbooks("Book2.xls")
Application.ScreenUpdating = False 'немного ускорим процесс
If wBook Is Nothing Then 'если она не открыта, то открываем её
Workbooks.Open Filename:= _
"\\***\Book2.xls"
Set GCell = Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Workbooks("Book1.xls").Activate
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
Else 'если она открыта
Set GCell = wBook.Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
End If
Exit Sub
End Sub
Макрос ищет выделенное в текущий момент значение ячейки из книги Book1 в книге Book2, в диапазоне B1:B1000. Если совпадение есть - делает фокус на Book2 и подсвечивает ячейку с искомым значением +3 ячейки вправо (у меня там сопроводительная информация лежит). Если совпадения нет - выдаёт ошибку. Если книга не открыта - сначала открывает, а потом уже ищет. Окошко с ошибкой сделал покрасивше, путь можно прописывать вплоть до файла на удалённом сервере. Все кейсы отработал, вроде накладок не возникает, так что можно пользоваться Вешать макрос на отдельную кнопку. Автор - Venique
Дата добавления - 12.11.2014 в 17:34
Sub CrossSearch()
'задаём переменные
Dim GCell As Range
Dim Txt$
Dim wBook As Workbook
'что ищем
Txt = ActiveCell.Value
'продолжаем выполнять макрос, иначе без открытой книги он прервётся
On Error Resume Next
'описываем книгу
sBookName = "Book2.xls"
sBookPath = "\\***\"
Set wBook = Workbooks(sBookName)
Application.ScreenUpdating = False 'немного ускорим процесс
If wBook Is Nothing Then 'если она не открыта, то открываем её
Workbooks.Open Filename:= sBookPath & sBookName
End If
Set GCell = wBook.Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
Exit Sub перед End Sub тоже лишнее.
Sub CrossSearch()
'задаём переменные
Dim GCell As Range
Dim Txt$
Dim wBook As Workbook
'что ищем
Txt = ActiveCell.Value
'продолжаем выполнять макрос, иначе без открытой книги он прервётся
On Error Resume Next
'описываем книгу
sBookName = "Book2.xls"
sBookPath = "\\***\"
Set wBook = Workbooks(sBookName)
Application.ScreenUpdating = False 'немного ускорим процесс
If wBook Is Nothing Then 'если она не открыта, то открываем её
Workbooks.Open Filename:= sBookPath & sBookName
End If
Set GCell = wBook.Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
Exit Sub перед End Sub тоже лишнее. RoViX
Sub CrossSearch()
'задаём переменные
Dim GCell As Range
Dim Txt$
Dim wBook As Workbook
'что ищем
Txt = ActiveCell.Value
'продолжаем выполнять макрос, иначе без открытой книги он прервётся
On Error Resume Next
'описываем книгу
sBookName = "Book2.xls"
sBookPath = "\\***\"
Set wBook = Workbooks(sBookName)
Application.ScreenUpdating = False 'немного ускорим процесс
If wBook Is Nothing Then 'если она не открыта, то открываем её
Workbooks.Open Filename:= sBookPath & sBookName
End If
Set GCell = wBook.Sheets("Лист1").Range("B2:B1000").Find(What:=Txt, LookIn:=xlValues, LookAt:=xlWhole) 'производим поиск полного совпадения
If GCell Is Nothing Then
MsgBox "ID " & Txt & " не найден.", vbOKOnly + vbCritical, "Поиск в Book2"
Application.ScreenUpdating = True
Else
Workbooks("Book2.xls").Activate 'выводим на передний план
Application.ScreenUpdating = True
ActiveSheet.Range(GCell, GCell.Offset(0, 3)).Select 'а затем выделяем найденный результат
End If
Exit Sub перед End Sub тоже лишнее. Автор - RoViX
Дата добавления - 18.01.2017 в 11:11
Как всегда искать по всей книге?
В Excel, когда вы применяете функцию «Найти и заменить», он по умолчанию будет искать на текущем листе, если вы всегда хотите искать на всех листах, вам нужно изменить Простыня в Workbook под Опция в Найти и заменить диалог при включении книги каждый раз. Как можно настроить поиск по всей книге вместо активного листа по умолчанию?
Всегда искать по всей книге с кодом VBA
Фактически, у нас нет прямого способа изменить область поиска на всю книгу по умолчанию в Excel, но вы можете применить следующий код VBA в качестве обходного пути. С помощью этого кода вам не нужно изменять область поиска каждый раз, когда вы обедаете эту книгу.
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: всегда искать по всей книге:
3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и в появившихся диалоговых окнах введите текстовые значения в поля «Найти» и «Заменить на» отдельно, см. снимок экрана:
4, Затем нажмите OK, все значения во всей книге, которую вы хотите, были заменены необходимыми значениями.
5. Сохраните книгу как Excel Macro-Enabled Workbook формат, и в следующий раз, когда вы откроете эту книгу, вы всегда сможете применить этот код для поиска во всей книге.
Всегда ищите по всей книге с помощью Kutools for Excel
Если у вас есть Kutools for Excel, С его Область переходов утилиту, вы всегда можете найти и заменить на листе, всей книге или нескольких открытых книгах по мере необходимости.
После установки Kutools for Excel, пожалуйста, сделайте следующее:
1. Нажмите Кутулс > Навигация, см. снимок экрана:
2. В Навигация панели, нажмите кнопку, чтобы перейти к Параметры навигации, в центре параметров укажите необходимый объем по умолчанию в поле Найти и заменить раздел, в этом случае я выберу Активная рабочая тетрадь, см. снимок экрана:
3. Затем нажмите OK кнопку, закройте и снова откройте книгу, чтобы применить эффект настройки, а теперь перейдите к Навигация панель и щелкните для активации Найти и заменить функция. в Найти и заменить панели, выполните следующие операции:
(1.) Под В вы можете видеть, что область действия по умолчанию была изменена на Активная рабочая тетрадь;
(2.) Под Замените на вкладке введите текст, который хотите найти и заменить отдельно, в поле Найти то, что и Заменить текстовое окно;
(3.) Затем щелкните Заменить все кнопку, чтобы заменить текст в активной книге, которая вам нужна.
4. С этого момента, когда вы открываете любую книгу и применяете это Найти и заменить Утилита Kutools, область поиска по умолчанию является активной книгой.
Более 300 функций могут сделать вашу работу более эффективной, вы можете скачать Kutools for Excel бесплатно.
Читайте также: