- Tham gia
- 3/7/07
- Bài viết
- 4,946
- Được thích
- 23,208
- Nghề nghiệp
- Dạy đàn piano
Các bác cho tôi hỏi chút.
Khi truy xuất dữ liệu (có sử dụng cả VBA và công thức), mình đặt tên cho khối cell bằng name động (dùng OFFSET) và name tĩnh (dùng Define name) thì cách nào chạy nhanh hơn? Có phải dùng name tĩnh thì sẽ nhanh hơn không?
Tôi hỏi cho những file có Database lớn (khoảng vài ngàn dòng trở lên) ?
Cụ thể hơn như sau:
Tôi có một bảng tính gồm 1795 dòng (không tính hàng trên cùng (hàng A) dùng làm tiêu đề và hàng dưới cùng (1796) làm hàng SubTotal) và 35 cột; ô đầu tiên (A1 được Define name = START)
Tôi dùng name động như sau (gõ trong ô Refers to)
Giả sử tôi muốn đặt tên cho cột Số Lượng và Thành Tiền, có header là SOLUONG và THANHTIEN, địa chỉ tuyệt đối là ($E2:$E1795) và ($F2:$F1795), thì giữa 2 cách:
Khi truy xuất dữ liệu (có sử dụng cả VBA và công thức), mình đặt tên cho khối cell bằng name động (dùng OFFSET) và name tĩnh (dùng Define name) thì cách nào chạy nhanh hơn? Có phải dùng name tĩnh thì sẽ nhanh hơn không?
Tôi hỏi cho những file có Database lớn (khoảng vài ngàn dòng trở lên) ?
Cụ thể hơn như sau:
Tôi có một bảng tính gồm 1795 dòng (không tính hàng trên cùng (hàng A) dùng làm tiêu đề và hàng dưới cùng (1796) làm hàng SubTotal) và 35 cột; ô đầu tiên (A1 được Define name = START)
Tôi dùng name động như sau (gõ trong ô Refers to)
* Tổng số cột của Database
Bây giờ tôi mới hỏi như sau: SumColumn: =COUNTA(Sheet1!$1:$1)
* Tổng số hàng của Database
SumRow: =COUNTA(Sheet1!$A:$A)-1
* Khối cell chứa mã số (ở cột A), là chủ đạo để tính toán hay tìm kiếm:
SumRecord: =OFFSET(START,1,0,SumRow,1)
* Khối cell chứa các Header (hàng trên cùng), tôi đặt tên để dùng làm bảng dò cho việc đặt tên các cột, đề phòng chuyện dời cột hoặc chèn thêm cột:
BangDo: =OFFSET(START,0,0,1,SumColumn)
Giả sử tôi muốn đặt tên cho cột Số Lượng và Thành Tiền, có header là SOLUONG và THANHTIEN, địa chỉ tuyệt đối là ($E2:$E1795) và ($F2:$F1795), thì giữa 2 cách:
Dùng name động:
Thì cách nào sẽ truy xuất dữ liệu nhanh hơn? (Tôi sẽ đặt tên cho khoảng 30 cột, tương ứng với 30 loại dữ liệu cần truy xuất, và số hàng của Database sẽ càng ngày càng nhiều hơn 1795 hàng)SLG: =OFFSET(SumRecord,0,MATCH("SOLUONG",BangDo,0)-1)
TTIEN: =OFFSET(SumRecord,0,MATCH("THANHTIEN",BangDo,0)-1)
Và dùng name tĩnh:TTIEN: =OFFSET(SumRecord,0,MATCH("THANHTIEN",BangDo,0)-1)
SLG: =Sheet1!$E2:$E1795
TTIEN: =Sheet1!$F2:$F1795
TTIEN: =Sheet1!$F2:$F1795
Lần chỉnh sửa cuối: