Как искать/находить значения в другой книге?
В этой статье рассказывается о том, как искать значения и возвращать данные из другой книги, а также о том, как находить/искать значения в другой книге. Здесь я подробно представлю три решения.
- Поиск данных и возврат значений из другой книги в Excel
- Поиск данных и возврат значений из другой закрытой книги с помощью VBA
Поиск данных и возврат значений из другой книги в Excel
Например, вы создаете таблицу покупок фруктов в Excel, и теперь вам нужно выполнить поиск фруктов из другой книги и вернуть соответствующие цены, как показано на скриншотах ниже. Здесь я покажу, как решить эту задачу с помощью функции VLOOKUP в Excel.
1. Откройте обе книги, из которых вы будете искать значения и куда будете возвращать значения.
2. Выберите пустую ячейку, куда вы хотите вернуть цену, и введите формулу =VLOOKUP(B2,[Price.xlsx]Sheet1!$A$1:$B$24,2,FALSE) в неё, затем перетащите маркер заполнения, чтобы применить эту формулу к нужному диапазону.

Примечания:
(1) В приведенной выше формуле B2 — это фрукт, который вы будете искать в другой книге, Price.xlsx указывает имя файла книги, из которой вы будете выполнять поиск, Sheet1 означает имя листа, из которого вы будете выполнять поиск, а A$1:$B$24 — это диапазон, по которому вы будете выполнять поиск. Вы можете изменить их по своему усмотрению.
(2) После закрытия книги, из которой выполнялся поиск, формула автоматически обновится до =VLOOKUP(B2,'W:\test\[Price.xlsx]Sheet1'!$A$1:$B$24,2,FALSE), где W:\test\ — это путь сохранения книги, из которой был выполнен поиск.
На данный момент все цены были возвращены правильно, как показано на скриншоте слева. И эти цены будут обновляться автоматически, если изменится исходная книга, из которой выполнялся поиск.
![]() | Слишком сложно запомнить формулу? Сохраните формулу как элемент автотекста, чтобы использовать её в будущем всего одним кликом! Читать далее… Бесплатная пробная версия |

Раскройте магию Excel с Kutools AI
- Умное выполнение: Выполняйте операции с ячейками, анализируйте данные и создавайте диаграммы — всё это посредством простых команд.
- Пользовательские формулы: Создавайте индивидуальные формулы для оптимизации ваших рабочих процессов.
- Кодирование VBA: Пишите и внедряйте код VBA без особых усилий.
- Интерпретация формул: Легко разбирайтесь в сложных формулах.
- Перевод текста: Преодолейте языковые барьеры в ваших таблицах.
Поиск данных и возврат значений из другой закрытой книги с помощью VBA
Может быть немного сложно настроить путь сохранения, имя файла и рабочий лист в функции VLOOKUP. Этот метод представляет VBA для простого решения.
1. Нажмите клавиши Alt + F11, чтобы открыть окно Microsoft Visual Basic for Applications.
2. Нажмите Insert > Module, затем вставьте следующий код VBA в открывшееся окно модуля.
VBA: Поиск данных и возврат значений из другой закрытой книги
Private Function GetColumn(Num As Integer) As String
If Num <= 26 Then
GetColumn = Chr(Num + 64)
Else
GetColumn = Chr((Num - 1) \ 26 + 64) & Chr((Num - 1) Mod 26 + 65)
End If
End Function
Sub FindValue()
Dim xAddress As String
Dim xString As String
Dim xFileName As Variant
Dim xUserRange As Range
Dim xRg As Range
Dim xFCell As Range
Dim xSourceSh As Worksheet
Dim xSourceWb As Workbook
On Error Resume Next
xAddress = Application.ActiveWindow.RangeSelection.Address
Set xUserRange = Application.InputBox("Lookup values :", "Kutools for Excel", xAddress, Type:=8)
If Err <> 0 Then Exit Sub
Set xUserRange = Application.Intersect(xUserRange, Application.ActiveSheet.UsedRange)
xFileName = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx", 1, "Select a Workbook")
If xFileName = False Then Exit Sub
Application.ScreenUpdating = False
Set xSourceWb = Workbooks.Open(xFileName)
Set xSourceSh = xSourceWb.Worksheets.Item(1)
xString = "='" & xSourceWb.Path & Application.PathSeparator & _
"[" & xSourceWb.Name & "]" & xSourceSh.Name & "'!$"
For Each xRg In xUserRange
Set xFCell = xSourceSh.Cells.Find(xRg.Value, , xlValues, xlWhole, , , False)
If Not (xFCell Is Nothing) Then
xRg.Offset(0, 2).Formula = xString & GetColumn(xFCell.Column + 1) & "$" & xFCell.Row
End If
Next
xSourceWb.Close False
Application.ScreenUpdating = True
End Sub
Примечание: Этот 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. Теперь выберите книгу, из которой вы будете искать значения в открывшемся диалоговом окне Select a Workbook, и нажмите кнопку Open кнопку.
Теперь все выбранные значения найдены в указанной закрытой книге, и соответствующие значения возвращаются в указанный столбец. См. скриншот:
Лучшие инструменты для повышения продуктивности работы с Office
Ускорьте работу в Excel с Kutools для Excel и ощутите новую степень эффективности. Kutools для Excel предлагает более300 расширенных функций для повышения продуктивности и экономии времени. Нажмите здесь, чтобы выбрать нужную вам функцию...
Office Tab добавляет вкладки в Office и делает вашу работу намного проще
- Включите редактирование и чтение с вкладками в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
- Открывайте и создавайте несколько документов во вкладках одного окна, а не в отдельных окнах.
- Увеличьте свою продуктивность на50% и сократите сотни лишних кликов мышью каждый день!