Tính tổng các ô i=i+4 trong 1 cột

  • Thread starter Thread starter Dungcd
  • Ngày gửi Ngày gửi
Liên hệ QC

Dungcd

Thành viên mới
Tham gia
28/1/10
Bài viết
1
Được thích
0
Tôi có 1 file dữ liệu thống kê bằng exel, yêu cầu đặt ra là phải tính tổng các ô trong từng cột (các ô này cách đều nhau, ví dụ: tính tổng các ô A1 + A4+A8+....+A400). Nhờ các bạn chỉ cách để thực hiện việc này.
Cảm ơn nhiều.
 
Tôi có 1 file dữ liệu thống kê bằng exel, yêu cầu đặt ra là phải tính tổng các ô trong từng cột (các ô này cách đều nhau, ví dụ: tính tổng các ô A1 + A4+A8+....+A400). Nhờ các bạn chỉ cách để thực hiện việc này.
Cảm ơn nhiều.
Nếu như cái ví dụ của bạn thì sao mà gọi là cách đều được nhỉ? A1 và A4 cách nhau có 3 ô, trong khi A4 và A8 cách nhau 4 ô?
 
Tôi có 1 file dữ liệu thống kê bằng exel, yêu cầu đặt ra là phải tính tổng các ô trong từng cột (các ô này cách đều nhau, ví dụ: tính tổng các ô A1 + A4+A8+....+A400). Nhờ các bạn chỉ cách để thực hiện việc này.
Cảm ơn nhiều.
Híc, cái này đâu có cách đều, chắc bạn bị nhầm (A1+A5+A9......) chứ, nếu đúng thì "chơi" tạm hàm "xí củn" này thử xem
Mã:
Public Function tong(vung As Range, so As Integer) As Long
    Dim i, kq As Long
        For i = 1 To vung.Rows.Count Step so
            kq = kq + vung(i)
        Next
tong = kq
End Function
Cú pháp: =tong(vung,so)
vung: là vùng muốn cộng
so: là khoảng nhảy (như ví dụ của bạn là 4, còn "hổng" muốn 4 thì 2,3,5,6...thì tùy)
 

File đính kèm

Tôi có 1 file dữ liệu thống kê bằng exel, yêu cầu đặt ra là phải tính tổng các ô trong từng cột (các ô này cách đều nhau, ví dụ: tính tổng các ô A1 + A4+A8+....+A400). Nhờ các bạn chỉ cách để thực hiện việc này.
Cảm ơn nhiều.
Cứ xem là khoảng cách 4 dòng như A1, A5, A9...,A(4n+1)
Mình dùng thử ct sau
=sumproduct(--(mid(row(),4)=1)*(A1:A(4n+1))
Bạn test thử nhé, tuỳ dk mà sửa lại hàm mod.
 
Cứ xem là khoảng cách 4 dòng như A1, A5, A9...,A(4n+1)
Mình dùng thử ct sau
=sumproduct(--(mid(row(),4)=1)*(A1:A(4n+1))
Bạn test thử nhé, tuỳ dk mà sửa lại hàm mod.
Công thức hay nhưng sai lỗi chính tả 1 chút
=SUMPRODUCT(--(MOD(ROW(A1:A400)),4)=1),(A1:A400)))
 
Lần chỉnh sửa cuối:
Công thức hay nhưng sai lỗi chính tả 1 chút
=SUMPRODUCT(--(MOD(ROW(A1:A400)),4)=1),(A1:A400)))
Cái này em đã nghĩ đến rồi.
Nhưng nó chỉ đúng khi dữ liệu bắt đầu từ A1.
Trong thực tế, hiếm có bảng tính nào bắt đầu từ A1, vì thường sẽ có vài hàng làm tiêu đề ở trên.
 
Cái này em đã nghĩ đến rồi.
Nhưng nó chỉ đúng khi dữ liệu bắt đầu từ A1.
Trong thực tế, hiếm có bảng tính nào bắt đầu từ A1, vì thường sẽ có vài hàng làm tiêu đề ở trên.

Vấn đề này có thể tuỳ biến như Thu Nghi nói tuỳ biến rồi. Ví dụ ô bắt đầu bằng ô A11, ta có 2 cách điều chỉnh vế điều kiện

1/Ta xem ô đầu tiên có Mod(Row(---),4=xxx , ta điều chỉnh --(MOD(ROW(A11:A35),4)=xxx), nếu đây là ô A11 có Mod(row(A11),4)=3 ta có Công thức
=SUMPRODUCT(--(MOD(ROW(A11:A400),4)=3),(A11:A400))

2/Để Công thức tự tính:

=SUMPRODUCT(--(MOD(ROW(A11:A400),4)=MOD(ROW($A$11),4)),(A11:A400))

Mình kiểm tra thấy đúng mà . Lưu ý, --(MOD(ROW(A11:A35),4)=xxx thì xxx không bắt buộc là mấy mà nó thay đổi từ 0-3 tùy thuộc ô đầu tiên
 
Cái này em đã nghĩ đến rồi.
Nhưng nó chỉ đúng khi dữ liệu bắt đầu từ A1.
Trong thực tế, hiếm có bảng tính nào bắt đầu từ A1, vì thường sẽ có vài hàng làm tiêu đề ở trên.
Hình như là thế này Thầy ơi ( dữ liệu từ A5 => A50, nhảy 4)
=SUM(IF(MOD(ROW(INDIRECT("1:"&COUNT($A$5:$A$50)))-1,4)=0,$A$5:$A$50,""))
Nhưng hình như nếu trong cột mà lũng lỗ thì nó cũng "tèo" theo luôn, không biết làm sao nữa
Híc
 
Em nghĩ, bài toán này không đơn giản như chúng ta tưởng đâu. Khi test các trường hợp, em nhận rq điều này.

Ngoài chuyện các ô tính tổng cách nhau một số ô nhất định, nó còn cần phải được xác định ô ban đầu là ô nào.

Ví dụ, với dãy A1:A100, yêu cầu tính tổng những ô cách nhau là 4 ô chẳng hạn, thì:
=SUM(A1,A5,A9,A13....)
=SUM(A2,A6,A10,A14....)
=SUM(A3,A7,A11,A15....)
=SUM(A4,A8,A12,A16....)​
Là 4 kết quả hoàn toàn khác nhau.

---------------------

Còn chuyện "tùy biến" mà anh Sealand nói, thì khỏi cần tùy biến, bởi khi chúng ta chèn hàng vào trên đầu hàng 1, thì Excel tự động thay đổi tham chiếu mà.

Em chỉ test bằng kiểu này thôi:

Em giả lập một cột số ở cột A, bắt đầu từ A1. Nhập công thức của anh ThuNghi vào B1. Nó sẽ ra một kết quả XYZ nào đó.

Ý em là cho dù em có chèn thêm bao nhiêu hàng ở trên đầu hàng thứ 1, thì cái kết quả XYZ phải luôn luôn là cố định.

Đằng này, không biết mấy anh thử chưa, chứ khi chèn hàng vào trên đầu hàng 1, thì kết quả XYZ đó nó sẽ thay đổi đấy.
 
BNTT hình như chưa hiểu mình thì phải, mình có 2 công thức:

1/ =SUMPRODUCT(--(MOD(ROW(A11:A400),4)=MOD(ROW($A$11),4)),(A11:A400 ))
Với công thức này thì thêm thoải mái vì máy sẽ xác định được dòng co mod bằng mod của dòng đầu tiên trong vùng
2/
=SUMPRODUCT(--(MOD(ROW(A11:A400),4)=3),(A11:A400))
Con số 3 trong công thức sẽ thay đổi từ 0 đến 3 tùy thuộc vào vị trí ô đầu tiên mà ta phải tính toán và thay vào
Mình test thấy đúng mà. Bạn xem ví dụ nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Em nghĩ, bài toán này không đơn giản như chúng ta tưởng đâu. Khi test các trường hợp, em nhận rq điều này.

Ngoài chuyện các ô tính tổng cách nhau một số ô nhất định, nó còn cần phải được xác định ô ban đầu là ô nào.

Ví dụ, với dãy A1:A100, yêu cầu tính tổng những ô cách nhau là 4 ô chẳng hạn, thì:
=SUM(A1,A5,A9,A13....)
=SUM(A2,A6,A10,A14....)
=SUM(A3,A7,A11,A15....)
=SUM(A4,A8,A12,A16....)​
Là 4 kết quả hoàn toàn khác nhau.
Dùng Offset đi là xong chuyện ---> Từ đâu đến đâu cũng được, chỉ quan tâm là sẽ Offset đi mấy dòng ---> Vậy thôi!
 
Dùng Offset đi là xong chuyện ---> Từ đâu đến đâu cũng được, chỉ quan tâm là sẽ Offset đi mấy dòng ---> Vậy thôi!
Nghĩ hoài hỏng ra dùng OFFSET thế nào anh ơi. Cho nó đi một lần thì được, nhưng bắt nó nhảy tưng tưng mỗi lần vài ô thế thì làm sao?
 
Nghĩ hoài hỏng ra dùng OFFSET thế nào anh ơi. Cho nó đi một lần thì được, nhưng bắt nó nhảy tưng tưng mỗi lần vài ô thế thì làm sao?
Thì OFFSET thế này nè:
PHP:
=SUMPRODUCT(N(OFFSET($A$7,4*(ROW(INDIRECT("1:"&INT((ROWS($A$7:$A$100)+3)/4)))-1),)))
Xét về mặc tốc độ thì công thức này chắc chắn nhanh hơn so với các công thức khác, vì:
- Cách dùng Mod phải duyệt qua tất cả các cell ---> Tương đương trong VBA là For i =1 to TongSoDong
- Cách này cũng duyệt qua các cell nhưng nhảy bước 4 ---> Tương đương trong VBA là For i =1 to TongSoDong Step 4
(Mượn tạm file của anh Sealand làm tiếp)
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom