Nhờ code tính tổng cho các ô trong1 cột

Liên hệ QC

bzone

Thành viên mới
Tham gia
3/1/11
Bài viết
6
Được thích
2
Nhờ bạn nào giúp mình đoạn code tinh tổng các ô như hình ạ.


1654415444811.jpeg
 

File đính kèm

  • DOANHTHUTHEOSANPHAM.xlsx
    87.9 KB · Đọc: 16
Lần chỉnh sửa cuối:
Cảm ơn Hoàng Tuấn đã đùa thật vui :) nhưng ở đây mình muốn hỏi là nếu các ô tổng đó trổng ,công thức làm để các ô tổng phụ đó cộng hết những ô ở trong nhóm của nó?
 
Cảm ơn Hoàng Tuấn đã đùa thật vui :) nhưng ở đây mình muốn hỏi là nếu các ô tổng đó trổng ,công thức làm để các ô tổng phụ đó cộng hết những ô ở trong nhóm của nó?
Sao ở trên hỏi code, ở dưới lại hỏi công thức. Chốt lại mong muốn cuối cùng như thế nào vậy.
 
PHP:
Sub TinhTongTheoMaHang()
 Dim Rws As Long, W As Long, DongT As Long, J As Long
 Dim Tong As Double
 
1 With Sheet1
    Rws = Sheet1.[B99999].End(xlUp).Row
3    ReDim Arr(1 To Rws, 1 To 1) As Double
    DongT = 1:             W = 1
5    For J = 12 To Rws
        If IsNumeric(Cells(J, "A")) Then
7            Arr(W, 1) = .Cells(J, "B").Value
            Tong = Tong + .Cells(J, "B").Value:     W = W + 1
9        Else
            Tong = Tong + 0
11            Arr(DongT, 1) = Tong:                   Tong = 0
            DongT = W:                              W = W + 1
13       End If
    Next J
    .[F12].Resize(W).Value = Arr()
 End With
End Sub
 
Lần chỉnh sửa cuối:
Sao ở trên hỏi code, ở dưới lại hỏi công thức. Chốt lại mong muốn cuối cùng như thế nào vậy.
Mình hỏi code để các ô như mã sản phẩm này có tổng các nội dung trong nhóm của nó. Thật là cảm ơn vì đã thấy cộng đồng và các bạn giàu kinh nghiệm1654418801168.png
Bài đã được tự động gộp:

PHP:
Sub TinhTongTheoMaHang()
 Dim Rws As Long, W As Long, DongT As Long, J As Long
 Dim Tong As Double
 
 With Sheet1
    Rws = Sheet1.[B99999].End(xlUp).Row
    ReDim Arr(1 To Rws, 1 To 1) As Double
    DongT = 1:             W = 1
    For J = 12 To Rws
        If IsNumeric(Cells(J, "A")) Then
            Arr(W, 1) = .Cells(J, "B").Value
            Tong = Tong + .Cells(J, "B").Value:     W = W + 1
        Else
            Tong = Tong + 0
            Arr(DongT, 1) = Tong:                   Tong = 0
            DongT = W:                              W = W + 1
        End If
    Next J
    .[F12].Resize(W).Value = Arr()
 End With
End Sub
mình thử đưa vào thì nó chạy nhưng kết quả lại không ra nhỉ? Cảm ơn bạn đã dành thời gian biết đoạn code dài.
 
Xem ở cột [F:F] ở cả 2 trang dùm cái!
 
Cho mình hỏi là học ở đâu để bạn có thể làm được như vậy?
Vấn đề bạn cần quan tâm hơn là dịch các câu lệnh VBA sang tiếng Việt
Sau đó bạn thử viết lại dàn bài cô gọn của các câu lệnh trong macro
Chúc bạn thành công.
 
Vấn đề bạn cần quan tâm hơn là dịch các câu lệnh VBA sang tiếng Việt
Sau đó bạn thử viết lại dàn bài cô gọn của các câu lệnh trong macro
Chúc bạn thành công.
đoạn code này mình cố dịch nhưng chưa hiểu cách thức hoạt động của nó, bạn SA_DQ có thể ban chút hào quang khai sáng cho minh không?
 
Khi bắt đầu nhân nhiệm vụ do bạn đề ra, mình đã có những suy cùng luận như trình tự sau:
* Muốn tính tổng cho từng mã sản phẩm (MSF), ta phải tạo vòng lặp duyệt tất thẩy các hàng (dòng) chứa MSF
Như vậy cần xác định dòng bắt đầu & dòng cuối của các MSF; (Dòng đầu thì dễ trực quan, dòng cuối xác định bằng phương thức di chuyển End() => (ứng với dòng lệnh mang số 2)
* Trong khi duyệt trên cột MSF thì có 2 trường hợp sảy ra
(a) Ô đang duyệt chứa dữ liệu (DL) kiểu số (ứng với dòng lệnh mang số 6) thì:
+ Tiến hành lưu số liệu lên mảng;
+ Tiến hành cộng dồn số liệu của 1 MSF
(b) Gặp DL kiểu chuỗi: (ứng với dòng lệnh mang số 9)
+ Chép tổng tính được lên mảng;
+ Cho tham biến tính tổng về 0, ngõ hầu chuẩn bị cho đợt tính cho MSF tiếp theo
. . . Cứ như vậy cho đến dòng DL cuối
Đây giống như là sơ đồ chiến thuật & đội hình cho 1 trận cầu & những mong giúp cho bạn tẹo nào đó để bước vô chi tiết dịch ngôn ngữ VBA sang tiếng Việt.
 
Lần chỉnh sửa cuối:
Trước tiên bạn auto filter "mã sản phẩm" tại cột A và delete hết các công thức đã điền tay trước đây.
Có 2 cách: Nhập công thức trên sheet hoặc dùng code để nhập công thức.

Cách 1:
Dùng code:
PHP:
Sub congthuc()
Dim lr&
lr = Cells(Rows.Count, "C").End(xlUp).Row
Range("B12:C" & lr).SpecialCells(xlCellTypeBlanks).Formula = "=AGGREGATE(9,0,B13:B$1656)*2-SUM(B13:B$1656)"
End Sub

Cách 2: Filter cột B, điều kiện là các ô trống, sau đó nhập công thức tại ô trống đầu tiên B12:
Mã:
=AGGREGATE(9,0,B13:B$1656)*2-SUM(B13:B$1656)
Copy sang phải và xuống dưới.
 

File đính kèm

  • DOANHTHUTHEOSANPHAM.xlsm
    114.7 KB · Đọc: 7
Cảm ơn tất cả anh em rất nhiều, thật tuyệt vời khi có 1 nơi để học và hỏi. Chân thành cảm ơn các anh em rất là nhiều.
Bài đã được tự động gộp:

Trước tiên bạn auto filter "mã sản phẩm" tại cột A và delete hết các công thức đã điền tay trước đây.
Có 2 cách: Nhập công thức trên sheet hoặc dùng code để nhập công thức.

Cách 1:
Dùng code:
PHP:
Sub congthuc()
Dim lr&
lr = Cells(Rows.Count, "C").End(xlUp).Row
Range("B12:C" & lr).SpecialCells(xlCellTypeBlanks).Formula = "=AGGREGATE(9,0,B13:B$1656)*2-SUM(B13:B$1656)"
End Sub

Cách 2: Filter cột B, điều kiện là các ô trống, sau đó nhập công thức tại ô trống đầu tiên B12:
Mã:
=AGGREGATE(9,0,B13:B$1656)*2-SUM(B13:B$1656)
Copy sang phải và xuống dưới.
cách tư duy thật sáng tạo! Tại hạ đã được mở rộng tầm mắt rồi!
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom