Tìm kiếm và nhận giá trị từ sổ làm việc bên ngoài dựa trên điều kiện nhất định và giá trị dán cùng với kiểu định dạng bằng VBA trong Microsoft Excel.
Trong bài viết này, chúng ta sẽ tìm hiểu cách lấy dữ liệu từ sổ làm việc bên ngoài trong sổ làm việc đang hoạt động dựa trên một số điều kiện đã xác định.
Trong ví dụ này, chúng tôi muốn biết thông tin chi tiết về tiền cho một người cụ thể dựa trên tên và loại ngân hàng. Chi tiết tiền được lưu trữ trong sổ làm việc “Tệp dữ liệu”.
Trong ví dụ này, chúng tôi đã viết thủ tục VBA “ReadFormatting” trả về chi tiết tiền cùng với kiểu định dạng.
Giải thích logic
Thủ tục “ReadFormatting” lấy đối tượng phạm vi làm đầu vào và trả về đầu ra trong ô bên cạnh đối tượng phạm vi đã xác định.
Nó kiểm tra giá trị đã xác định trong phạm vi trong hàng đầu tiên của sổ làm việc “Tệp dữ liệu” và tìm số cột. Nó kiểm tra giá trị của ô của cột trước đó của phạm vi đã xác định trong cột đầu tiên của sổ làm việc “Tệp dữ liệu” và tìm số hàng.
Sau khi tìm thấy số cột và số hàng có thể khớp, giá trị của ô có số cột và số hàng đã tìm được sẽ được trả về cùng với kiểu định dạng.
Thủ tục “ReadFormatting” có thể được chạy bằng cách sử dụng thủ tục hoặc sự kiện khác.
Chúng tôi sẽ chạy thủ tục “ReadFormatting” theo hai cách: -. Quy trình sử dụng. Sử dụng sự kiện thay đổi trang tính
Quy trình sử dụng
Chúng tôi đã sử dụng thủ tục “Gọi điện theo quy trình” để gọi thủ tục “Định dạng đọc” với ô N13 là đối tượng phạm vi. Nó sẽ kiểm tra giá trị trong ô N13 trong hàng đầu tiên của sổ làm việc bên ngoài để tìm số cột và kiểm tra giá trị trong ô M13 trong cột đầu tiên của sổ làm việc bên ngoài để tìm số hàng. Sau khi tìm thấy số cột và số hàng, nó sẽ trả về giá trị cùng với kiểu định dạng.
Sử dụng sự kiện thay đổi trang tính
Để thêm sự kiện thay đổi trang tính, hãy làm theo các bước sau: -. Bấm vào tên trang tính trong Visual Basic Editor, để kích hoạt mô-đun trang tính.
-
Bấm vào trang tính trong hộp tổ hợp bên trái trên đầu cửa sổ mã.
-
Nhấp vào thay đổi trong hộp kết hợp bên phải trên đầu cửa sổ mã.
Chúng tôi đã sử dụng sự kiện thay đổi trang tính để chạy thủ tục. Sự kiện thay đổi trang tính được kích hoạt khi giá trị của bất kỳ ô nào trong sổ làm việc bị thay đổi. Sử dụng câu lệnh IF, chúng tôi đã hạn chế sự kiện thay đổi chỉ được kích hoạt khi giá trị trong ô của cột I bị thay đổi. Ô có giá trị bị thay đổi, đóng vai trò là đầu vào cho thủ tục “ReadFormatting”.
Vui lòng theo dõi bên dưới để biết mã
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
Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.
Chúng tôi rất muốn nghe ý kiến từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]