2015-03-25 22 views
5

Tôi đã sử dụng hàm VLOOKUP để tìm giá trị trong một mảng nhưng một số giá trị trả về # N/A mặc dù có sẵn trong mảng.VLOOKUP không tìm giá trị trong mảng

Để làm tròn lên những con số, tôi đã sử dụng chức năng CEILING nhưng điểm thú vị là trong một số giá trị, nó đã không làm việc.

Tôi đã kiểm tra loại giá trị nếu đó là số hay không.

Ngoài ra, tôi đã sử dụng chức năng ROUNDUP nhưng không hoạt động.

Ngoài ra, tôi đã thử kết hợp INDEX/MATCH không hoạt động.

Trong ví dụ mà tôi đã cung cấp trong liên kết, khi tôi nhập từ 15,00 - 15,20, nó cho lỗi nhưng thử các giá trị khác, nó hoạt động.

Làm cách nào để khắc phục sự cố này?

Trả lời

3

này có vẻ là một lỗi với VLOOKUPMATCH sử dụng giá trị trả lại là CEILING. Nếu bạn sử dụng:

=VLOOKUP(ROUND(CEILING(F4,0.1),1),A:B,2,FALSE)

sau đó nó hoạt động như mong đợi.

Nếu chúng ta xem xét điều này với VBA thì chúng ta sẽ thấy điều gì xảy ra. Để đổ lỗi nên thực sự là CEILINGROUNDUP. Xem ví dụ:

Sub testCeilingAndRoundup() 

Dim v As Double, test As Boolean, diff As Double 

v = [CEILING(15.1,0.1)] '15.1 
test = (v = 15.1) 'FALSE 
diff = 15.1 - v '-1.776...E-15 

v = [ROUNDUP(15.25,1)] '15.3 
test = (v = 15.3) 'FALSE 
diff = 15.3 - v '1.776...E-15 

End Sub 
+0

Vâng, nó thực sự hoạt động. Cảm ơn bạn. –

0

chức năng CEILING của bạn nên được chính xác hơn nếu bạn muốn tìm một trận đấu cho 15,10

Thay đổi nó để CEILING(F4,0.01) và nó sẽ hoạt động :)

+0

này thất bại nếu đầu vào là ví dụ 15.09. Mục đích rõ ràng là làm tròn điều này lên đến 15,10 và trả lại 95, nhưng công thức của bạn đưa ra một lỗi. –

+0

Ngoài ra, tôi không hiểu * tại sao * 'CEILING (15.10,0.1)' và 'CEILING (15.10,0.01)' sẽ hoạt động khác nhau (mặc dù thử nghiệm cho thấy chúng thực hiện). Cả hai nguyên tắc phải trả về cùng một con số chính xác, tức là 15.1. Vì vậy, tôi không hiểu tại sao bạn đề xuất câu trả lời này! –

+0

'CEILING (15.10, 0.1)' và 'CEILING (15.10, 0,01)' là giống nhau. Không có sự khác biệt. –

4

Có vẻ như bạn đã gặp phải lỗi Excel.

Áp dụng CEILING với số 15,1 nên trả lại kết quả tương tự chính xác (15,1) bất kể tầm quan trọng là 0,1, 0,01, 0,001, vv

Và quả thực đúng như vậy, theo Excel: khi được hỏi nếu họ bình đẳng, câu trả lời luôn là TRUE.

Nhưng tra cứu các số bằng toán học này trong bảng tra cứu sẽ cho kết quả khác nhau.

enter image description here

Đây có phải là một lỗi.

Thay vì CEILING(F4,0.1), tôi đề nghị bạn sử dụng ROUNDUP(F4,1) có vẻ như không có lỗi. Không, ROUNDUP cũng bị lỗi. Axel Richter's answer đề xuất gói CEILING trong một số ROUND và điều này dường như không làm cho vấn đề biến mất.Bạn cũng có thể chuyển sang chuỗi và trở về số:

VALUE(TEXT(ROUNDUP(F4,1),"0.0")) 

vì vậy bạn phải

=VLOOKUP(VALUE(TEXT(ROUNDUP(F4,1),"0.0")),A:B,2,FALSE) 
Các vấn đề liên quan