Поиск и получение значения из внешней книги на основе определенного условия и вставив значение наряду со стилем форматирования с помощью VBA в Microsoft Excel.
В этой статье мы узнаем, как получить данные из внешней книги в активной книге на основе определенного определенного условия.
В этом примере мы хотим получить сведения о деньгах для конкретного человека на основе имени и типа категории банка. Реквизиты денег хранятся в книге «Файл данных».
В этом примере мы написали процедуру VBA «ReadFormatting», которая возвращает сведения о деньгах вместе со стилем формата.
Логическое объяснение
Процедура «ReadFormatting» принимает объект диапазона в качестве входных данных и возвращает результат в ячейке рядом с определенным объектом диапазона.
Он проверяет определенное значение в диапазоне в первой строке книги «Файл данных» и находит номер столбца. Он проверяет значение ячейки предыдущего столбца определенного диапазона в первом столбце книги «Файл данных» и находит номер строки.
После нахождения номера столбца и номера строки возможного совпадения, значение ячейки с найденным номером столбца и номером строки возвращается вместе со стилем формата.
Процедуру «ReadFormatting» можно запустить с помощью другой процедуры или события.
Мы будем запускать процедуру «ReadFormatting» двумя способами: -. Использование процедуры. Использование события изменения рабочего листа
Использование процедуры
Мы использовали процедуру «CallingProcedure» для вызова процедуры «ReadFormatting» с ячейкой N13 в качестве объекта диапазона. Он проверит значение в ячейке N13 в первой строке внешней книги, чтобы найти номер столбца, и проверит значение в ячейке M13 в первом столбце внешней книги, чтобы найти номер строки. После нахождения номера столбца и номера строки он вернет значение вместе со стилем формата.
Использование события изменения рабочего листа
Чтобы добавить событие изменения рабочего листа, выполните следующие действия: -. Щелкните имя листа в редакторе Visual Basic, чтобы активировать модуль листа.
-
Щелкните лист в левом поле со списком в верхней части окна кода.
-
Щелкните изменение в правом поле со списком в верхней части окна кода.
Мы использовали событие изменения рабочего листа для запуска процедуры. Событие изменения рабочего листа запускается при изменении значения любой ячейки в книге. Используя оператор IF, мы ограничили срабатывание события изменения только при изменении значения в ячейке столбца I. Ячейка, значение которой изменено, действует как вход для процедуры «ReadFormatting».
Пожалуйста, введите код ниже
Option Explicit Sub CallingProcedure() 'Calling procedure ReadFormatting for cell N13 Call ReadFormatting(Range("N13")) End Sub Sub ReadFormatting(rng As Range) Dim varRow, varCol As Long Application.ScreenUpdating = False 'Activating workbook "Data file.xlsx" Workbooks("Data file.xlsx").Activate 'Checking for Errors 'If any runtime error occur then it will the pointer to end of the procedure On Error GoTo Last 'Finding the column no after matching rng value in the first row of "Data file.xlsx" workbook varRow = Application.Match(rng.Value, Rows(1), 0) 'Offset method is used for moving one cell in the previous column 'Finding the row no after matching value of cell in the first column of "Data file.xlsx" workbook varCol = Application.Match(rng.Offset(0, -1).Value, Columns(1), 0) 'Using If statement for checking errors 'If error not found in varRow and varCol then execute below code If Not IsError(varRow) And Not IsError(varCol) Then 'Copying value of cell where match of row and column intersect Cells(varCol, varRow).Copy 'Pasting the format of copied cell rng.Offset(0, 1).PasteSpecial xlPasteFormats 'Pasting the value of copied cell rng.Offset(0, 1).PasteSpecial xlPasteValues 'Unselecting the previous copied data and clearing the cache Application.CutCopyMode = False End If Application.ScreenUpdating = True Last: Workbooks("Searching_And_Getting_Data_From_Other_File_Along_With_Formatting.xlsm").Activate End Sub
Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]