Tao name động để tinh tổng

Liên hệ QC

nguyennb

Thành viên hoạt động
Tham gia
23/10/07
Bài viết
103
Được thích
32
Tôi cần tạo một name động để tính tổng số các ô nằm dưới ô chứa name động. Ví dụ như ô E8 của sheet 1 chứa công thức tỉnh tổng các ô phía dưới
Mã:
    =SUMIF(OFFSET(Sheet1!E8,1,0,100,1),"<>")
Nhưng khi copy name động sang các sheet khác thì không dùng được nữa vì tên sheet trong name không thay đổi. Tôi tìm kiếm trong diễn đàn rồi nhưng chưa tìm được câu trả lời thỏa đáng. Mọi người giúp tôi với
 
Có phải ý của bạn như thế này không? Khi dùng name sang sheet khác thì Name động này sẽ tự động thay đổi sheet tham chiếu là sheet hiện hành! Bạn trả lời xong, nếu đúng mình sẽ hướng dẫn cách làm!

Bạn xem file đính kèm nhé!
 

File đính kèm

Lần chỉnh sửa cuối:
Tôi cần tạo một name động để tính tổng số các ô nằm dưới ô chứa name động. Ví dụ như ô E8 của sheet 1 chứa công thức tỉnh tổng các ô phía dưới
Mã:
    =SUMIF(OFFSET(Sheet1!E8,1,0,100,1),"<>")
Nhưng khi copy name động sang các sheet khác thì không dùng được nữa vì tên sheet trong name không thay đổi. Tôi tìm kiếm trong diễn đàn rồi nhưng chưa tìm được câu trả lời thỏa đáng. Mọi người giúp tôi với
Mình thường copy cả Sheet theo cách phải chuột vào Tab Sheet/Move or copy... vậy là cứ việc sử dụng các name đã đặt.
 
Đúng như ý của ca_di. Mình muốn đặt tên cho công thức này để dùng cho nhiều cột trong nhiều sheet
 
Làm sao bỏ được chữ Sheet1 vậy anh! Theo em thì ta không bỏ được chữ sheet1 ấy đi đâu! Tuy nhiên vẫn có cách khác, làm 1 lần và xài mãi mãi!
Có thể bỏ Sheet1 bằng cách : các bạn dùng hàm INDIRECT, cụ thể là

=SUMIF(OFFSET(INDIRECT("E8"),1,0,100,1),"<>")

Như vậy, sheet nào cũng dùng được. Nếu muốn áp dụng cho các cột thì kết hợp thêm hàm ADDRESS & COLUMN()

Chúc vui
TDN

 
Lần chỉnh sửa cuối:
Như vậy có ba cách để thực hiện việc này:
Khi dùng name sang sheet khác thì Name động này sẽ tự động thay đổi sheet tham chiếu là sheet hiện hành

Cách 1: (ca_dafi)
Tại một vị trí bất kỳ Tương ứng trên mỗi sheet (ví dụ Sheet1, sheet2, sheet3) ta gõ vào vùng đặt Name (Name box) - góc trái bên trên, như sau:
PHP:
sheet1!mySUMIF
sheet2!mySUMIF
sheet3!mySUMIF
Sau đó vào Insert/Name/Define sửa công thừc trong Name lại cho đúng với yêu cầu, trong trường hợp này là:
PHP:
mySUMIF = SUMIF(OFFSET(Sheet1!E8,1,0,100,1),"<>")
mySUMIF = SUMIF(OFFSET(Sheet2!E8,1,0,100,1),"<>")
mySUMIF = SUMIF(OFFSET(Sheet3!E8,1,0,100,1),"<>")

Cách 2: (Cao Mạnh Sơn)
Sau khi đặt Name cho sheet hiện hành xong:
Copy cả Sheet hiện hành bằng cách Click phải chuột vào Tab Sheet/Move or copy..../ Chọn workbook hiện hành và chọn Create a copy

Cách 3: (Tedaynui)
Đơn giản là đặt 1 name với INDIRECT, như sau:
PHP:
mySUMIF = SUMIF(OFFSET(INDIRECT("E8"),1,0,100,1),"<>")

Nhận xét chung: trong cả ba cách, cách của anh Tedaynui (cách 3) là nhanh và hiệu quả nhất! Cãm ơn anh!
 
Có thể bỏ Sheet1 bằng cách : các bạn dùng hàm INDIRECT, cụ thể là

=SUMIF(OFFSET(INDIRECT("E8"),1,0,100,1), "<>")

Như vậy, sheet nào cũng dùng được. Nếu muốn áp dụng cho các cột thì kết hợp thêm hàm ADDRESS & COLUMN()

Chúc vui
TDN

Có phải ý của Tedaynui là cái công thức này:
=SUMIF(OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), 1, 0, 100, 1),"<>")
Tính tổng của dãy bắt đầu từ ô ngay liền kề dưới ô chứa công thức cho đến 100 ô tiếp theo trong cùng cột (con số 100 có thể tăng thêm) ?
Muốn bỏ công thức này ở chỗ nào cũng được, trong Sheet nào cũng được...
 
Web KT

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

Back
Top Bottom