Tính tổng con cho các phân đoạn (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

NguyenNgocSon

KEEP WALKING
Tham gia
4/4/08
Bài viết
280
Được thích
833
Nghề nghiệp
Ths. Cầu hầm
Mình có file dữ liệu như file đính kèm
Muốn lấy ra dữ liệu mà chưa có cách giải quyết
Mọi ngưởi có cao kiến gì giúp đỡ
Cám ơn !
 

File đính kèm

Mình có file dữ liệu như file đính kèm
Muốn lấy ra dữ liệu mà chưa có cách giải quyết
Mọi ngưởi có cao kiến gì giúp đỡ
Cám ơn !
Bạn test code sau
Mã:
Sub fill()
With Application
For Each cell In ActiveSheet.UsedRange.Columns(1).Cells
If cell <> "" And .CountIf(Rows(1), cell) Then
Cells(cell.End(xlUp).Row, .Match(cell, Rows(1), 0)) = cell.Offset(, 2)
End If
Next
End With
End Sub
 
Upvote 0
Bạn test code sau
Mã:
Sub fill()
With Application
For Each cell In ActiveSheet.UsedRange.Columns(1).Cells
If cell <> "" And .CountIf(Rows(1), cell) Then
Cells(cell.End(xlUp).Row, .Match(cell, Rows(1), 0)) = cell.Offset(, 2)
End If
Next
End With
End Sub
Cám ơn Bác. Code ngắn gọn, đáp ứng
Giờ tôi muốn giá trị gán dạng công thức không phải giá trị thì như nào Bác
Cám ơn !
 
Upvote 0
Upvote 0
Cám ơn Bác. Code ngắn gọn, đáp ứng
Giờ tôi muốn giá trị gán dạng công thức không phải giá trị thì như nào Bác
Cám ơn !
bác thử công thức cho các ô:
Mã:
[COLOR=#0000cd][SIZE=3][B]D2 [/B][/SIZE][/COLOR]=INDEX(C2:$C$65000;MATCH($D$1;OFFSET(A2;;;65000);0);0)
Mã:
[COLOR=#0000cd][SIZE=3][B]E2 [/B][/SIZE][/COLOR]=INDEX(C2:$C$65000;MATCH($E$1;OFFSET(A2;;;65000);0);0)
Mã:
[COLOR=#0000cd][SIZE=3][B]F2 [/B][/SIZE][/COLOR]=INDEX(C2:$C$65000;MATCH($F$1;OFFSET(A2;;;65000);0);0)

sau khi Record Macro + chỉnh sửa:
Mã:
Sub test()
Dim CurRow As Long, sCol As String
    '-----
    CurRow = ActiveCell.Row
    sCol = Cells(1, ActiveCell.Column).Address
    '-----
    ActiveCell = "=INDEX(" & "C" & CurRow & ":$C$65000" & ",MATCH(" & sCol & ",OFFSET(A2,,,65000),0),0)"
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Có cách nào điền hàm Sum vào các ô như file sau ?
 

File đính kèm

Upvote 0
Có cách nào điền hàm Sum vào các ô như file sau ?

bác tải tiếp file sau nhé !
- vào Sheet1 click Button 1 --> xem kết quả
(chú ý: cột đơn vị tính phải có ô trống để phân biệt với mỗi nhóm)

Mã:
Sub GPE_test()
Dim rng As Range, iRow As Long

    For Each rng In Range("A2:A22")
    If rng <> "" And Range("B" & rng.Row) = "" Then
        iRow = rng.Row + 1
        '{=SUM(OFFSET(C4;;;MATCH(TRUE;B4:B$1000="";0)-1))}
        Range("D" & rng.Row).FormulaArray = _
            "=SUM(OFFSET(" & "C" & iRow & ",,,MATCH(TRUE," & "B" & iRow & ":$B$1000="""",0)-1))"
    End If
    Next
    
End Sub
 

File đính kèm

Upvote 0
Có cách nào điền hàm Sum vào các ô như file sau ?

Dạng bài này rất đơn giản, bằng tay cũng ra chứ chẳng cần đến VBA.
Cách làm như sau:
- Quét chọn A2:C100
- Gọi công cụ AutoFilter
- Bấm mũi tên xổ xuống ở cột A, bỏ chọn mục Blanks
- Bấm mũi tên xổ xuống ở cột B, bỏ chọn tất cả, trừ mục Blanks
- Xong, quét chọn các cell tại cột C, gõ vào thanh Formula công thức: =2*SUBTOTAL(109,$C4:$C$100)-SUM($C4:$C$100) rồi bấm Ctrl + Enter
- Hũy AutoFilter và kiểm tra kết quả

[video=youtube;GdYFxFy6dJ8]https://www.youtube.com/watch?v=GdYFxFy6dJ8&feature=youtu.be[/video]
 
Upvote 0
Có cách nào điền hàm Sum vào các ô như file sau ?
Thử thêm 1 code này
PHP:
Sub SumUp()
Dim data(), i, j
data = Range([A3], [C65536].End(3).Offset(1)).Value
i = 1
Do
   If data(i, 2) = "" Then
      j = 1
      If data(i, 1) = "" Then i = i + 2
      Do While data(i + j, 2) <> ""
         j = j + 1
      Loop
   End If
   data(i, 3) = "=Sum(R[1]C:R[" & j - 1 & "]C)"
   i = i + j
   j = 0
Loop Until i >= UBound(data)
[A3].Resize(i, 3) = data
End Sub
 
Upvote 0

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

Back
Top Bottom