Tìm địa chỉ của giá trị thấp nhất trong một dải (Microsoft Excel)
Khi viết macro, bạn có thể tìm giá trị thấp nhất trong một dải ô bằng cách sử dụng phương thức WorksheetFunction để áp dụng hàm trang tính MIN. Tuy nhiên, bạn có thể cần không chỉ tìm giá trị thấp nhất trong phạm vi mà còn cả địa chỉ của ô đầu tiên chứa giá trị đó.
Một cách đơn giản là chỉ cần bước qua phạm vi bạn muốn kiểm tra và lấy cả giá trị thấp nhất và địa chỉ của ô đang được kiểm tra, như sau:
Function FindLowestAddr(pRng As Range) As String Application.Volatile MinVal = pRng.Cells(1).Value MinAddr = pRng.Cells(1).Address For Each c in pRng If c.Value < MinVal Then MinVal = c.Value MinAddr = c.Address End If Next c FindLowestAddr = MinAddr End Function
Lưu ý rằng phương pháp này hoàn toàn không dựa vào hàm trang tính MIN. Tuy nhiên, có một nhược điểm của nó – nó không phân biệt giữa các ô chứa giá trị số và ô không chứa giá trị số. Nói cách khác, nếu phạm vi được truyền đến hàm chứa ô trống, ô đó được coi là chứa giá trị 0, rất có thể là giá trị thấp nhất trong phạm vi.
Một cách để giải quyết vấn đề này là dựa vào các hàm trang tính từ bên trong macro. Macro sau sử dụng cả hàm trang tính MIN và MATCH để xác định vị trí của giá trị nhỏ nhất và sau đó là chỉ số (độ lệch) của ô đó trong phạm vi.
Function GetAddr(rng As Range) As String Dim dMin As Double Dim lIndex As Long Dim sAddress As String Application.Volatile With Application.WorksheetFunction dMin = .Min(rng) lIndex = .Match(dMin, rng, 0) End With GetAddr = rng.Cells(lIndex).Address End Function
Cần lưu ý rằng nếu bạn đang sử dụng macro chỉ để khám phá địa chỉ vì bạn nhận ra rằng không có cách nào để lấy thông tin mong muốn mà không có macro, thì bạn có thể loại bỏ hoàn toàn macro bằng cách sử dụng công thức trang tính. Ví dụ: nếu bạn muốn xác định địa chỉ của ô có giá trị thấp nhất trong phạm vi được đặt tên MyRange, bạn có thể sử dụng như sau:
=ADDRESS(ROW(MyRange)+MATCH(MIN(MyRange),MyRange,0)-1,COLUMN(MyRange))
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (7140) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: