Thắc mắc về name động (1 người xem)

Người dùng đang xem chủ đề này

tueyennhi

Thành viên tích cực
Tham gia
18/10/10
Bài viết
1,192
Được thích
105
Chào anh chị!

Em có sử dụng một name động sau: =OFFSET('Detail report'!$J$36,,,COUNTA('Detail report'!$B$36:$B$2859))

Em có một thắc mắc tại sao đối với các công thức khác như ví dụ như =+COUNTIF(Y$37:Y5000,$K10)

Rõ ràng tại name động em đã nhiều lần phải sửa lại như sau:

=OFFSET('Detail report'!$J$36,,,COUNTA('Detail report'!$B$36:$B$5000))

Nhưng không hiểu sao mỗi lần em thêm hoặc xóa trong bảng dữ liệu thì cái =OFFSET('Detail report'!$... sẽ thay đổi địa chỉ cột B theo đúng số dòng mà trong bảng tính có. Và điều kì lạ em không hiểu là ở các công thức em ví dụ ở trên (=+COUNTIF(Y$37:Y5000,$K10) nó cũng sẽ thay đổi theo bằng đúng số dòng trong bảng tính.
 
Chào anh chị!

Em có sử dụng một name động sau: =OFFSET('Detail report'!$J$36,,,COUNTA('Detail report'!$B$36:$B$2859))

Em có một thắc mắc tại sao đối với các công thức khác như ví dụ như =+COUNTIF(Y$37:Y5000,$K10)

Rõ ràng tại name động em đã nhiều lần phải sửa lại như sau:

=OFFSET('Detail report'!$J$36,,,COUNTA('Detail report'!$B$36:$B$5000))

Nhưng không hiểu sao mỗi lần em thêm hoặc xóa trong bảng dữ liệu thì cái =OFFSET('Detail report'!$... sẽ thay đổi địa chỉ cột B theo đúng số dòng mà trong bảng tính có. Và điều kì lạ em không hiểu là ở các công thức em ví dụ ở trên (=+COUNTIF(Y$37:Y5000,$K10) nó cũng sẽ thay đổi theo bằng đúng số dòng trong bảng tính.
Bạn hiểu cấu trúc của hàm Offset hay không? Mình tạm dịch hàm OFFSET('Detail report'!$J$36,,,COUNTA('Detail report'!$B$36:$B$2859)) như sau. Bắt đầu từ ô 'Detail report'!$J$36, và sẽ dịch chuyển xuống COUNTA('Detail report'!$B$36:$B$2859) dòng, Cái lệnh COUNTA('Detail report'!$B$36:$B$2859) sẽ đếm dữ liệu của bạn có bao nhiêu dòng thì nó sẽ trả về số dòng tương ứng (VD: Dữ liệu của bạn có 10 dòng thì hàm COUNTA('Detail report'!$B$36:$B$2859) sẽ trả về 10, nếu dữ liệu của bạn có 20 dòng thì hàm COUNTA('Detail report'!$B$36:$B$2859) sẽ trả về 20 dòng). Chính vì vậy mà nếu bạn nhập bao nhiêu dòng thì hàm sẽ dịch chuyển xuống bấy nhiêu dòng tương ứng, mặc dù bạn có sửa 5000 hay 65000 đi nửa thì nó vẫn trả về dòng dữ liệu của bạn đang có thực tế.
Tôi giải thích vậy không biết bạn có hiểu không chứ tôi đọc lại chẳng hiểu gì cả.
 
Bạn hiểu cấu trúc của hàm Offset hay không? Mình tạm dịch hàm OFFSET('Detail report'!$J$36,,,COUNTA('Detail report'!$B$36:$B$2859)) như sau. Bắt đầu từ ô 'Detail report'!$J$36, và sẽ dịch chuyển xuống COUNTA('Detail report'!$B$36:$B$2859) dòng, Cái lệnh COUNTA('Detail report'!$B$36:$B$2859) sẽ đếm dữ liệu của bạn có bao nhiêu dòng thì nó sẽ trả về số dòng tương ứng (VD: Dữ liệu của bạn có 10 dòng thì hàm COUNTA('Detail report'!$B$36:$B$2859) sẽ trả về 10, nếu dữ liệu của bạn có 20 dòng thì hàm COUNTA('Detail report'!$B$36:$B$2859) sẽ trả về 20 dòng). Chính vì vậy mà nếu bạn nhập bao nhiêu dòng thì hàm sẽ dịch chuyển xuống bấy nhiêu dòng tương ứng, mặc dù bạn có sửa 5000 hay 65000 đi nửa thì nó vẫn trả về dòng dữ liệu của bạn đang có thực tế.
Tôi giải thích vậy không biết bạn có hiểu không chứ tôi đọc lại chẳng hiểu gì cả.


Vâng cái đó em hiểu. Ý em là em đã cố định B rà xoát đến dòng 5000 nhưng không hiểu sao giả sử từ dòng 2000 em xóa hết toàn bộ dữ liệu trở xuống thì cái 5000 nó cũng thay đổi thành 2000. Theo như em hiểu cái số 5000 sẽ bất biến, nhiệm vụ của nó sẽ rà xoát cho đến ô 5000 xem dữ liệu đến đâu. Và điều kỳ lạ là các ô khác không sử dụng name động ấy cũng bị thay đổi số dòng bằng với chính số dòng có dữ liệu cuối cùng mà nó đếm được.
 
Vâng em thấy có hại hơn có lợi. Bởi vì những hàm không có name động ấy nó vẫn bị thay đổi giá trị theo (Với trường hợp xóa) chứ nếu thêm dòng thì nó lại không update theo @@.
 

Bài viết mới nhất

Back
Top Bottom