Created
March 20, 2018 03:49
-
-
Save DuongAQ/73b71820314206df2d8bc309f0943666 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sub Tim_so_gan_dung() | |
Dim rng As Range | |
Dim r As Range | |
Dim Mx As Single | |
Dim i As Long | |
Dim Target As Integer | |
Target = Range("E2").Value 'Số làm mẫu tại ô E2 | |
Set rng = Range([A3], Range("A" & Rows.Count).End(xlUp)) 'Phạm vi dãy số ở cột A từ A3 tới dòng cuối có chứa dữ liệu | |
rng.Offset(, 1).ClearContents 'Xóa kết quả tại cột B (cách rgn 1 cột). Đây là nơi sẽ thông báo kết quả của lệnh VBA | |
Mx = Application.Max(rng) 'Biến Mx xác định độ lệch. Khi bắt đầu sẽ gán với giá trị lớn nhất trong dãy số | |
'Điều kiện sai lệch không được lớn hơn số lớn nhất | |
If Target > Mx * 2 Then | |
MsgBox "Gia tri khong phu hop" | |
Exit Sub | |
Else | |
For Each r In rng | |
If Abs(Target - r) < Mx Then 'Xác định sai số theo từng lần đối chiếu | |
'Hàm Abs để lấy giá trị tuyệt đối của phép trừ để tìm số có độ lệch nhỏ nhất | |
Mx = Abs(Target - r) 'Nếu độ lệch mới tìm được nhỏ hơn giá trị đã tìm được trước đó _ | |
'thì sẽ lấy theo giá trị độ lệch mới (nhỏ hơn) | |
i = r.Row 'Xác định dòng tại vị trí có độ lệch nhỏ hơn | |
End If | |
Next r | |
Cells(i, 2) = "Match" 'Khi xét hết các giá trị trong danh sách thì dòng nào được ghi nhận tại biến i | |
'sẽ là vị trí số gần đúng nhất | |
End If | |
End Sub |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment