Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA tìm giá trị cao thứ hai.

Tình huống:

Find Second Highest Value in Excel VBA

  1. Đầu tiên, chúng ta khai báo hai đối tượng Range và hai biến kiểu Double. Chúng tôi gọi các đối tượng Range là rng và ô. Một biến kép mà chúng tôi gọi là MaximumValue và một biến kép chúng tôi gọi là secondHighestValue.

Dim rng As Range, cell As Range

Dim highestValue As Double, secondHighestValue As Double
  1. Chúng ta khởi tạo đối tượng Range rng với dải ô đã chọn và hai biến Double có giá trị 0.

Set rng = Selection

highestValue = 0

secondHighestValue = 0
  1. Đầu tiên, chúng tôi muốn tìm giá trị cao nhất. Chúng tôi muốn kiểm tra từng ô trong một phạm vi được chọn ngẫu nhiên (phạm vi này có thể có kích thước bất kỳ). Trong Excel VBA, bạn có thể sử dụng vòng lặp Cho Mỗi Tiếp theo cho việc này. Thêm các dòng mã sau:

'Find Highest Value

For Each cell In rng

Next cell

Lưu ý: rng và ô được chọn ngẫu nhiên ở đây, bạn có thể sử dụng bất kỳ tên nào.

Hãy nhớ tham khảo những tên này trong phần còn lại của mã của bạn. Dòng màu xanh lá cây là một nhận xét và chỉ được thêm vào đây để cung cấp thông tin về đoạn mã này.

  1. Chúng tôi kiểm tra từng ô trong phạm vi này. Nếu nó cao hơn giá trị cao nhất, chúng tôi ghi giá trị vào biến giá trị cao nhất. Thêm dòng mã sau vào vòng lặp.

If cell.Value > highestValue Then highestValue = cell.Value

Lưu ý: giá trị đầu tiên luôn cao hơn giá trị cao nhất vì giá trị bắt đầu của giá trị cao nhất là 0.

  1. Thứ hai, chúng tôi muốn tìm Giá trị cao thứ hai. Chúng tôi thêm một vòng lặp For Each Next.

'Find Second Highest Value

For Each cell In rng

Next cell
  1. Chúng tôi kiểm tra lại từng ô trong phạm vi đã chọn. Nếu nó cao hơn secondHighestValue và thấp hơn mostValue, chúng tôi ghi giá trị vào biến secondHighestValue. Thêm dòng mã sau vào vòng lặp.

If cell.Value > secondHighestValue And cell.Value < highestValue Then secondHighestValue = cell.Value
  1. Cuối cùng, chúng tôi hiển thị giá trị cao thứ hai bằng cách sử dụng MsgBox.

MsgBox "Second Highest Value is " & secondHighestValue
  1. Đặt macro của bạn vào một nút lệnh, chọn các số và nhấp vào nút lệnh.

Kết quả:

Find Second Highest Value Result