Lỗi xuất hiện ký tự @ trong công thức excel 2021

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

vuong tu don

Thành viên mới
Tham gia
22/10/09
Bài viết
7
Được thích
1
Kính nhờ các anh/chị giải thích và xử lý giúp lỗi này trong excel 2021 với ạ
Em có công thức với hàm Countif là:
=COUNTIFS('NV'!K:K,B11,'KQ'!V:V,'BC NV'!$U$7)
Nhưng khi enter thì nó cứ xuất hiện thêm ký tự @ trước bảng điều kiện mà không cho ra kết quả gì cả. Xoá đi thì báo lỗi.
=COUNTIFS(@'NV'!K:K,B11,@'KQ'!V:V,'BC NV'!$U$7)
Xin chỉ giáo ạ!
 
Lần chỉnh sửa cuối:
Tôi là dân văn phòng, thuở nhỏ bố mẹ cho cắp sách đến trường chứ không phải học võ cho nên tôi mang thành kiến "văn trọng võ khinh". Từ ngữ của dân võ biền học theo phim chưởng HK tôi cho là bất nhã.

Vì vậy, tôi cố tình đợi một ngày trước khi bắt đầu giải thích và chỉ dẫn cho những người "văn" như tôi. Còn ai đó muốn "chỉ giáo" thì đợi những người võ biền. (tôi không tin là đề tài này có được mấy người trong GPE biết tới đâu)

Trước đời 365/2021 thì Excel theo chế độ mảng cứng. Cái gì là mảng thì phải vạch thẳng là mảng (thường là dùng bộ gõ CSE).
Ví dụ =$B$1:$B$10 thì Excel sẽ chọn một trong các ô từ B1 đến B10 làm kết quả (chọn như thế nào xin chờ giải thích sau)
Nhưng kể từ 365/2021 thì Excel theo chế độ mảng động. Cái gì có thể nhận ra được là mảng thì Excel cứ coi nó là mảng.
Ví dụ =$B$1:$B$10 thì Excel sẽ lấy luôn cả nhóm 10 ô làm kết quả.

Cách chọn của Excel 2019 và cũ hơn (tức các phiên bản không dùng mảng động):
Excel sẽ sử dụng một con toán "phép giao mảng/range ngầm". Trong con toán này, ô chứa công thức sẽ được đem giao với mảng để tìm ra dòng liên hệ. Ví dụ công thức =$B$1:$B$10 nằm ở ô A2 (row = 2) thì kết quả là B2; nếu công thức nằm ở ô A11 thì sẽ được #VALUE! bởi vì hiển nhiên, dòng 11 không có trong range kia, phép giao trả về rỗng (nothing).
Nếu bạn nào muốn tìm hiểu thêm thì từ khóa là Implicit Intersection.

Vì 365 là phiên bản mảng động cho nên muốn lấy 1 trị như các đời cũ thì làm thế nào?
Câu trả lời là ép công thức dùng phép giao ngầm. Và @ là ký hiệu ép phép giao ngầm.
Trong 365, =@$B$1:$B$10 sẽ ra giống như $B$1:$B$10 trong các phiên bản cũ.
Nguyên tắc có vậy thôi, bạn nào muốn biết rõ hơn hoặc muốn xác định tầm vực của @ thì phải tự dưng lấy dữ liệu và tự test các kiểu có thể tưởng tượng ra.

Chú thích:
Tôi nhớ các phiên bản đầu của 365 thì khi bạn dùng công thức có @, đem qua các phiên bản cũ thì các dấu @ sẽ tự động biến mất (công thức bạn có ra như ý hay không là chuyện khác)
Nhưng theo phiên bản cập nhật thường xuyên mà tôi đang dùng thì gặp @, Excel sẽ lên một câu khuyến cáo rằng công thức này có thể không phù hợp với các phiên bản khác và đề nghị bạn xóa các @ đi. Bạn có thể chọn Yes hoặc No.
 
Tôi là dân văn phòng, thuở nhỏ bố mẹ cho cắp sách đến trường chứ không phải học võ cho nên tôi mang thành kiến "văn trọng võ khinh". Từ ngữ của dân võ biền học theo phim chưởng HK tôi cho là bất nhã.

Vì vậy, tôi cố tình đợi một ngày trước khi bắt đầu giải thích và chỉ dẫn cho những người "văn" như tôi. Còn ai đó muốn "chỉ giáo" thì đợi những người võ biền. (tôi không tin là đề tài này có được mấy người trong GPE biết tới đâu)

Trước đời 365/2021 thì Excel theo chế độ mảng cứng. Cái gì là mảng thì phải vạch thẳng là mảng (thường là dùng bộ gõ CSE).
Ví dụ =$B$1:$B$10 thì Excel sẽ chọn một trong các ô từ B1 đến B10 làm kết quả (chọn như thế nào xin chờ giải thích sau)
Nhưng kể từ 365/2021 thì Excel theo chế độ mảng động. Cái gì có thể nhận ra được là mảng thì Excel cứ coi nó là mảng.
Ví dụ =$B$1:$B$10 thì Excel sẽ lấy luôn cả nhóm 10 ô làm kết quả.

Cách chọn của Excel 2019 và cũ hơn (tức các phiên bản không dùng mảng động):
Excel sẽ sử dụng một con toán "phép giao mảng/range ngầm". Trong con toán này, ô chứa công thức sẽ được đem giao với mảng để tìm ra dòng liên hệ. Ví dụ công thức =$B$1:$B$10 nằm ở ô A2 (row = 2) thì kết quả là B2; nếu công thức nằm ở ô A11 thì sẽ được #VALUE! bởi vì hiển nhiên, dòng 11 không có trong range kia, phép giao trả về rỗng (nothing).
Nếu bạn nào muốn tìm hiểu thêm thì từ khóa là Implicit Intersection.

Vì 365 là phiên bản mảng động cho nên muốn lấy 1 trị như các đời cũ thì làm thế nào?
Câu trả lời là ép công thức dùng phép giao ngầm. Và @ là ký hiệu ép phép giao ngầm.
Trong 365, =@$B$1:$B$10 sẽ ra giống như $B$1:$B$10 trong các phiên bản cũ.
Nguyên tắc có vậy thôi, bạn nào muốn biết rõ hơn hoặc muốn xác định tầm vực của @ thì phải tự dưng lấy dữ liệu và tự test các kiểu có thể tưởng tượng ra.

Chú thích:
Tôi nhớ các phiên bản đầu của 365 thì khi bạn dùng công thức có @, đem qua các phiên bản cũ thì các dấu @ sẽ tự động biến mất (công thức bạn có ra như ý hay không là chuyện khác)
Nhưng theo phiên bản cập nhật thường xuyên mà tôi đang dùng thì gặp @, Excel sẽ lên một câu khuyến cáo rằng công thức này có thể không phù hợp với các phiên bản khác và đề nghị bạn xóa các @ đi. Bạn có thể chọn Yes hoặc No.
Em đọc mà không hiểu được.
 
Em đọc mà không hiểu được.
Chỗ nào? Implicit intersection:

1712310488344.png
Trong hình trên, công thức ở ô D3 in hệt như D1-D6. Tức là tham số lookup value nạp vào hàm VLookup là một range cố định.
Excel không thể tính range cho tham số này cho nên nó bắt buộc phải dùng phép giao ngầm để chọn ra đúng vị trí mà người viết công thức muốn. C3 ứng với dòng 3, trị được tìm nằm ở hàng 3 của A1:A5, tức là ô A3 với trị là 20, Vlookup trả về "d". C6 tương ứng với dòng 6, dòng này không có trong A1:A5 cho nên phép giao cho ra nothing, và VLookup trả về lỗi Value.
 
Chỗ nào? Implicit intersection:

View attachment 300030
Trong hình trên, công thức ở ô D3 in hệt như D1-D6. Tức là tham số lookup value nạp vào hàm VLookup là một range cố định.
Excel không thể tính range cho tham số này cho nên nó bắt buộc phải dùng phép giao ngầm để chọn ra đúng vị trí mà người viết công thức muốn. C3 ứng với dòng 3, trị được tìm nằm ở hàng 3 của A1:A5, tức là ô A3 với trị là 20, Vlookup trả về "d". C6 tương ứng với dòng 6, dòng này không có trong A1:A5 cho nên phép giao cho ra nothing, và VLookup trả về lỗi Value.
À, em chưa dùng công thức Vlookup mà 1 dãy thế kia ạ,
Em toàn dùng 1 giá trị thôi ạ.
 
À, em chưa dùng công thức Vlookup mà 1 dãy thế kia ạ,
Em toàn dùng 1 giá trị thôi ạ.
VLookup như trên chỉ là ví dụ. Trong nhất thời tôi chưa nhớ ra được trường hợp nào gần như bắt buộc phải làm vậy (cách khác cũng được nhưng khó hơn)
Tuy nhiên, tôi biết có một số người luôn luôn dùng một dãy như thế. Họ bảo rằng như thế trông rõ hơn dùng 1 giá trị.

Nếu bạn quen dùng Table sẽ nhận ra rằng người ta có thể dùng tên cột (tức là cả cột của table) với dấu @ đi trước để xác định rằng "dòng này, dòng của ô chứa công thức".
 
VLookup như trên chỉ là ví dụ. Trong nhất thời tôi chưa nhớ ra được trường hợp nào gần như bắt buộc phải làm vậy (cách khác cũng được nhưng khó hơn)
Tuy nhiên, tôi biết có một số người luôn luôn dùng một dãy như thế. Họ bảo rằng như thế trông rõ hơn dùng 1 giá trị.

Nếu bạn quen dùng Table sẽ nhận ra rằng người ta có thể dùng tên cột (tức là cả cột của table) với dấu @ đi trước để xác định rằng "dòng này, dòng của ô chứa công thức".
Đúng ạ, nếu nói Table thì em hiểu ngay là dùng Vlook như kiểu table kia ạ,
 
Web KT
Back
Top Bottom