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     Dim MinVal As Double     Dim MinAddr As String     Dim c As Range

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

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 (12744) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: