Thay thế hàm OFFSET

Liên hệ QC

vova2209

Thành viên tích cực
Tham gia
5/4/17
Bài viết
825
Được thích
110
Giới tính
Nam
Nghề nghiệp
Đường bộ
Chào anh chị!
Em đang dùng hàm offset để links số liệu từ dòng trên AX14, em cảm thấy hàm này nặng file tính đi nhiều.
mục đích của em là khi lấy số liệu từ dòng trên xuống khi mình xóa dòng hoặc chèn dòng thì sẽ không bị lỗi công thức. có thể thay thế hàm khác vào được không ạ. Trong file em có nhiều cột công thức offset. em xin cảm ơn
222.jpg
 
Chào anh chị!
Em đang dùng hàm offset để links số liệu từ dòng trên AX14, em cảm thấy hàm này nặng file tính đi nhiều.
mục đích của em là khi lấy số liệu từ dòng trên xuống khi mình xóa dòng hoặc chèn dòng thì sẽ không bị lỗi công thức. có thể thay thế hàm khác vào được không ạ. Trong file em có nhiều cột công thức offset. em xin cảm ơn
View attachment 272952
Bạn có hiểu bản chất công thức không?
AX15=Offset(AX$1,ROW()-2,0) nó tương đương công thức =AX14 (tại AX15) rồi kéo xuống
Phải hiểu nó để điều chỉnh cho phù hợp chứ
 
Bạn có hiểu bản chất công thức không?
AX15=Offset(AX$1,ROW()-2,0) nó tương đương công thức =AX14 (tại AX15) rồi kéo xuống
Phải hiểu nó để điều chỉnh cho phù hợp chứ
em có ghi rõ là lấy số liệu từ AX14 lấy xuống AX15. ý em là có thể thay bằng hàm khác được không, vì em thấy hàm offset này file tính có vẻ nặng hơn. vì em không muốn =AX14 trực tiếp bên trên khi xóa dòng đi sẽ bị lỗi dữ liệu, nên em hỏi có hàm nào có thể thay thế được không?
 
Đang hiểu bạn này sẽ xóa vào dòng bị link, nên báo #REF
Dùng thử
PHP:
=INDIRECT("AX"&ROW()-1)
hoặc
PHP:
=Offset(AT15,-1,1)
coi có nhẹ hơn không :D
 
Lần chỉnh sửa cuối:
em có ghi rõ là lấy số liệu từ AX14 lấy xuống AX15. ý em là có thể thay bằng hàm khác được không, vì em thấy hàm offset này file tính có vẻ nặng hơn. vì em không muốn =AX14 trực tiếp bên trên khi xóa dòng đi sẽ bị lỗi dữ liệu, nên em hỏi có hàm nào có thể thay thế được không?
Hàm khác thì cũng có, index($AX$1:AX500,row()-1), hay là indirect kết hợp row(), hay chuyển về bảng tính dạng [RC],.. Tất nhiên cái gì đơn giản thì nên làm đơn giản, tham chiếu ô trước thì cứ trực tiếp vào nó. Bạn xóa dòng là do bạn, nó bị lỗi cũng giúp bạn xem lại bạn đã xóa hay làm gì mà lỗi. Tham chiếu không rõ ràng nhiều khi ra kết quả sai mà không biết đấy
 
Tôi không rành Excel lắm, thấy cái này cũng tò mò giải pháp thay thế.
Nếu thay thế giữa việc tham chiếu trực tiếp (=AX14) với việc dùng hàm (OFFSET..) thì thông qua hàm sẽ mất thời gian xử lý hơn rồi. Nếu dùng hàm thì giờ lại so sánh tiếp code gốc của hàm OFFSET so với INDEX xem thằng nào chạy tốt hơn. :D
 
Tôi không rành Excel lắm, thấy cái này cũng tò mò giải pháp thay thế.
Nếu thay thế giữa việc tham chiếu trực tiếp (=AX14) với việc dùng hàm (OFFSET..) thì thông qua hàm sẽ mất thời gian xử lý hơn rồi. Nếu dùng hàm thì giờ lại so sánh tiếp code gốc của hàm OFFSET so với INDEX xem thằng nào chạy tốt hơn. :D
mình thay 1 số cột dùng hàm offset bằng index thấy index nhẹ hơn.
Bài đã được tự động gộp:

Đang hiểu bạn này sẽ xóa vào dòng bị link, nên báo #REF
Dùng thử
PHP:
=INDIRECT("AX"&ROW()-1)
hoặc
PHP:
=Offset(AT15,-1,1)
coi có nhẹ hơn không :D
đúng ý mình là như vậy! bởi hay phải chèn xóa, mà bảng tính có nhiều cột nên mất công sửa tay nếu xóa dòng, lại phải kéo lại công thức nếu dùng = ct bên trên
 
Index hay Offset đều dùng vec tơ để chiếu từ một range đến range khác.
Nếu bảo nhẹ thì Offset nhẹ hơn Index may ra còn có cửa. Vì Index hoạt động trên cả mảng lẫn range.

Lý do duy nhất khiến Index "cảm thấy" nhẹ hơn Offset là do tính chất volatile (nhạy) của Offset. Hàm có tính chất volatile sẽ tính lại với mỗi thay đổi bất kỳ trên bảng tính, không nhất thiết phải liên quan đến ô. Vì vậy, thay Offset bằng Index hay không là do nhu cầu của bảng tính, tức là nhu cầu sử dụng độ nhạy, chứ không phải do nặng nhẹ.

Trước mắt thì nhìn cái hình đã thấy bảng tính nặng rồi, không cần phải xem công thức nào cả.

Muốn bảng tính nhẹ thì phải trình bày nó cho vừa mắt. Những màu mè, kẻ ô, hình ảnh,... dẹp quách hết. Chỉ giữ lại vài chỗ thực sự cần thiết. Nó cũng giống như dọn rác trong nhà. Nếu không có can đảm liệng đồ cũ đi thì càng ngày nhà sẽ càng chật rác. Thiết kế nội thất mà dùng nhiều màu quá thì cái nội thất ấy sẽ thành sân khấu cải lương.
 
Index hay Offset đều dùng vec tơ để chiếu từ một range đến range khác.
Nếu bảo nhẹ thì Offset nhẹ hơn Index may ra còn có cửa. Vì Index hoạt động trên cả mảng lẫn range.

Lý do duy nhất khiến Index "cảm thấy" nhẹ hơn Offset là do tính chất volatile (nhạy) của Offset. Hàm có tính chất volatile sẽ tính lại với mỗi thay đổi bất kỳ trên bảng tính, không nhất thiết phải liên quan đến ô. Vì vậy, thay Offset bằng Index hay không là do nhu cầu của bảng tính, tức là nhu cầu sử dụng độ nhạy, chứ không phải do nặng nhẹ.

Trước mắt thì nhìn cái hình đã thấy bảng tính nặng rồi, không cần phải xem công thức nào cả.

Muốn bảng tính nhẹ thì phải trình bày nó cho vừa mắt. Những màu mè, kẻ ô, hình ảnh,... dẹp quách hết. Chỉ giữ lại vài chỗ thực sự cần thiết. Nó cũng giống như dọn rác trong nhà. Nếu không có can đảm liệng đồ cũ đi thì càng ngày nhà sẽ càng chật rác. Thiết kế nội thất mà dùng nhiều màu quá thì cái nội thất ấy sẽ thành sân khấu cải lương.
Vâng tiếp thu ý kiến! kẻ ô cũng và mầu chữ cũng ảnh hưởng đến tốc độ à chị
Bài đã được tự động gộp:

Offset có 6 ký tự, còn index có 5 ký tự nên nhẹ hơn rồi.
Không nên mang người khác châm biếm. Nếu mình biết thì đã không lên nhờ mọi người giúp đỡ rồi. không nên.. không nên!
 
Mình nói vui thôi, không có ý châm biếm ai cả, nếu không vừa ý thì vui lòng bỏ qua.
 
Quan trọng bạn tìm ra được giải pháp chưa ?
 
Quan trọng bạn tìm ra được giải pháp chưa ?
file em nhiều công thức tính nên tìm hiểu tối giản công thức lại cho nhẹ file ạ. chắc sài vba sẽ giảm gánh nặng cho file tính.
Bài đã được tự động gộp:

Index hay Offset đều dùng vec tơ để chiếu từ một range đến range khác.
Nếu bảo nhẹ thì Offset nhẹ hơn Index may ra còn có cửa. Vì Index hoạt động trên cả mảng lẫn range.

Lý do duy nhất khiến Index "cảm thấy" nhẹ hơn Offset là do tính chất volatile (nhạy) của Offset. Hàm có tính chất volatile sẽ tính lại với mỗi thay đổi bất kỳ trên bảng tính, không nhất thiết phải liên quan đến ô. Vì vậy, thay Offset bằng Index hay không là do nhu cầu của bảng tính, tức là nhu cầu sử dụng độ nhạy, chứ không phải do nặng nhẹ.

Trước mắt thì nhìn cái hình đã thấy bảng tính nặng rồi, không cần phải xem công thức nào cả.

Muốn bảng tính nhẹ thì phải trình bày nó cho vừa mắt. Những màu mè, kẻ ô, hình ảnh,... dẹp quách hết. Chỉ giữ lại vài chỗ thực sự cần thiết. Nó cũng giống như dọn rác trong nhà. Nếu không có can đảm liệng đồ cũ đi thì càng ngày nhà sẽ càng chật rác. Thiết kế nội thất mà dùng nhiều màu quá thì cái nội thất ấy sẽ thành sân khấu cải lương.
em thấy anh Nguyen Duy Tuan - Bluesofts phân tích hàm này làm chậm bảng tính đi nhiều
Liên kết: https://www.youtube.com/watch?v=LWQZfVNxy3s&t=620s
 
Lần chỉnh sửa cuối:
Index hay Offset đều dùng vec tơ để chiếu từ một range đến range khác.
Nếu bảo nhẹ thì Offset nhẹ hơn Index may ra còn có cửa. Vì Index hoạt động trên cả mảng lẫn range.

Lý do duy nhất khiến Index "cảm thấy" nhẹ hơn Offset là do tính chất volatile (nhạy) của Offset. Hàm có tính chất volatile sẽ tính lại với mỗi thay đổi bất kỳ trên bảng tính, không nhất thiết phải liên quan đến ô. Vì vậy, thay Offset bằng Index hay không là do nhu cầu của bảng tính, tức là nhu cầu sử dụng độ nhạy, chứ không phải do nặng nhẹ.

Trước mắt thì nhìn cái hình đã thấy bảng tính nặng rồi, không cần phải xem công thức nào cả.

Muốn bảng tính nhẹ thì phải trình bày nó cho vừa mắt. Những màu mè, kẻ ô, hình ảnh,... dẹp quách hết. Chỉ giữ lại vài chỗ thực sự cần thiết. Nó cũng giống như dọn rác trong nhà. Nếu không có can đảm liệng đồ cũ đi thì càng ngày nhà sẽ càng chật rác. Thiết kế nội thất mà dùng nhiều màu quá thì cái nội thất ấy sẽ thành sân khấu cải lương.
Mình nghỉ hơi khác, hàm Ofset có khả năng thay đổi số dòng số cột và tạo các "mảng" của các ô nên xử lý bên trong phức tạp hơn Index và tốc độ sẽ chậm hơn. Chỉ là ý kiến riêng chưa kiểm chứng được :)
 
Mình nghỉ hơi khác, hàm Ofset có khả năng thay đổi số dòng số cột và tạo các "mảng" của các ô nên xử lý bên trong phức tạp hơn Index và tốc độ sẽ chậm hơn. Chỉ là ý kiến riêng chưa kiểm chứng được :)
Số dòng và số cột chỉ là tiện lợi của Resize. Chúng đều là số nguyên và chỉ là con số cho biết giới hạn của range, con toán không thể gọi là đáng kể.
Khi công thức nhận được địa chỉ range là nó nhận được thông số cho biết ô đầu tiên của range và tầm vực/giới hạn của range. Chỗ còn lại do đối tượng range xử lý.
Theo prototype (dạng khai báo hàm) thì Offset đơn giản hơn Index. Offset buộc đầu vào là range và đầu ra là range; và nếu range nhiều hơn 1 cells thì chúng phải liên tục. Đầu vào lẫn đầu ra của Index đều có thể là range hay mảng; và có thể là 3 chiều. Vec tơ chiếu tới thuần range sẽ đồng bộ hơn chọn lựa giữa range và mảng. Nói cách khác, cái đối tượng range mà Offset dựng lên có nhiều khả năng đơn giản hơn cái đối tượng của Index.
 
Số dòng và số cột chỉ là tiện lợi của Resize. Chúng đều là số nguyên và chỉ là con số cho biết giới hạn của range, con toán không thể gọi là đáng kể.
Khi công thức nhận được địa chỉ range là nó nhận được thông số cho biết ô đầu tiên của range và tầm vực/giới hạn của range. Chỗ còn lại do đối tượng range xử lý.
Theo prototype (dạng khai báo hàm) thì Offset đơn giản hơn Index. Offset buộc đầu vào là range và đầu ra là range; và nếu range nhiều hơn 1 cells thì chúng phải liên tục. Đầu vào lẫn đầu ra của Index đều có thể là range hay mảng; và có thể là 3 chiều. Vec tơ chiếu tới thuần range sẽ đồng bộ hơn chọn lựa giữa range và mảng. Nói cách khác, cái đối tượng range mà Offset dựng lên có nhiều khả năng đơn giản hơn cái đối tượng của Index.
Ví dụ
=SUMIF(OFFSET(A2,,{0,1},{1;2;3;4;5}),">0")
Chỉ với 2 tham số là mảng của offset trả về 10 vùng dữ liệu, nếu lập trình xử lý sẽ rất phức tạp, Index chỉ trả về 1 vùng dữ liệu, cách xử lý sẽ đơn giản hơn, và tốc độ sẽ thường tương đồng với độ phức tạp của các lệnh
 
Web KT
Back
Top Bottom