Chèn dòng Sum theo điều kiện

Liên hệ QC

genius111

Thành viên chính thức
Tham gia
7/7/13
Bài viết
93
Được thích
14
Chào cả nhà, em có bài toán này nhờ cả nhà giúp em với
Em có 1 bảng tính có cột B gồm các hàng có ký tự đầu từ 0 đến n (ví dụ hàng có ký tự đầu là 0 sẽ có cả chục dòng, ký tự 1 đến n cũng như vậy)
Bài toán là cứ đến dòng cuối cùng của 1 ký tự sẽ chèn thêm 1 dòng và đưa hàm sum vào để tính tổng các cột bên cạnh nó). Bảng tính của em có cả nghìn dòng nên làm tay cực quá, em có diễn giải chi tiết yêu cầu trong file, cả nhà xem giúp em với, em cảm ơn!
 

File đính kèm

  • Sum VBA.xls
    57.5 KB · Đọc: 12
Chào cả nhà, em có bài toán này nhờ cả nhà giúp em với
Em có 1 bảng tính có cột B gồm các hàng có ký tự đầu từ 0 đến n (ví dụ hàng có ký tự đầu là 0 sẽ có cả chục dòng, ký tự 1 đến n cũng như vậy)
Bài toán là cứ đến dòng cuối cùng của 1 ký tự sẽ chèn thêm 1 dòng và đưa hàm sum vào để tính tổng các cột bên cạnh nó). Bảng tính của em có cả nghìn dòng nên làm tay cực quá, em có diễn giải chi tiết yêu cầu trong file, cả nhà xem giúp em với, em cảm ơn!
Bạn xem thử file
 

File đính kèm

  • Sum VBA (1).xls
    72.5 KB · Đọc: 17
Upvote 0
bác hiểu nhầm ý em rùi, ý em là ở cái bảng đầu tiên excel sẽ tự chèn thêm dòng và đưa công thức sum vào giống như bảng bên cạnh, chứ không phải là chuyển dữ liệu từ bảng 1 sang bảng 2
Không biết có phải vầy không?
 

File đính kèm

  • Sum VBA.xls
    71.5 KB · Đọc: 35
Upvote 0
Không biết có phải vầy không?
hi đúng ý em quá rồi, em cảm ơn bác nhiều nhiều ạ
nhưng bác giải thích giúp em ở mấy đoạn code này em không hiểu:
Tmp1 = Split(sArr(i, 1), "-")
If i < UBound(sArr) Then
Tmp2 = Split(sArr(i + 1, 1), "-")
Else
Tmp2 = Split("Het-roi", "_")
End If
If Tmp1(0) <> Tmp2(0) Then

nhất là cái đoạn Split("Het-roi")
em cảm ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
hi đúng ý em quá rồi, em cảm ơn bác nhiều nhiều ạ
nhưng bác giải thích giúp em ở mấy đoạn code này em không hiểu:
Tmp1 = Split(sArr(i, 1), "-")
If i < UBound(sArr) Then
Tmp2 = Split(sArr(i + 1, 1), "-")
Else
Tmp2 = Split("Het-roi", "_")
End If
If Tmp1(0) <> Tmp2(0) Then

nhất là cái đoạn Split("Het-roi")
em cảm ơn!
Cái này tôi chỉ sửa code của bạn @PacificPR thôi, vì vậy bạn nên nhờ @PacificPR giải thích hộ đi. Tôi dốt vụ giải thích này lắm. :) :) :)
 
Upvote 0
Chào cả nhà, em có bài toán này nhờ cả nhà giúp em với
Em có 1 bảng tính có cột B gồm các hàng có ký tự đầu từ 0 đến n (ví dụ hàng có ký tự đầu là 0 sẽ có cả chục dòng, ký tự 1 đến n cũng như vậy)
Bài toán là cứ đến dòng cuối cùng của 1 ký tự sẽ chèn thêm 1 dòng và đưa hàm sum vào để tính tổng các cột bên cạnh nó). Bảng tính của em có cả nghìn dòng nên làm tay cực quá, em có diễn giải chi tiết yêu cầu trong file, cả nhà xem giúp em với, em cảm ơn!
Bạn tham khảo:
PHP:
Sub abc()
    Dim LR As Long, i, j, r
    LR = Cells(Rows.Count, "B").End(xlUp).Row
    For i = LR To 7 Step -1
        If Cells(i, "C").Value Like "*" & "C15" Then
            Rows(i + 1).Resize(1).Insert
            Cells(i + 1, 2) = "T" & ChrW(7893) & "ng"
            Cells(i + 1, 2).Font.Bold = True
        End If
    Next i
    With Sheets(1)
        For j = 4 To 11
            For Each r In .Columns(j).SpecialCells(2).Areas
                With r(r.Count + 1)
                    .Formula = "=sum(" & r.Address & ")"
                    .Font.Bold = True
                End With
            Next
        Next
    End With
End Sub
 
Upvote 0
Bạn tham khảo:
PHP:
Sub abc()
    Dim LR As Long, i, j, r
    LR = Cells(Rows.Count, "B").End(xlUp).Row
    For i = LR To 7 Step -1
        If Cells(i, "C").Value Like "*" & "C15" Then
            Rows(i + 1).Resize(1).Insert
            Cells(i + 1, 2) = "T" & ChrW(7893) & "ng"
            Cells(i + 1, 2).Font.Bold = True
        End If
    Next i
    With Sheets(1)
        For j = 4 To 11
            For Each r In .Columns(j).SpecialCells(2).Areas
                With r(r.Count + 1)
                    .Formula = "=sum(" & r.Address & ")"
                    .Font.Bold = True
                End With
            Next
        Next
    End With
End Sub
em cảm ơn ạ, cách này tốc độ chậm đi 1 xíu nhưng được cái dễ hiểu hơn. hihi
 
Upvote 0
bác PcificPR ơi, bác giải thích đoạn code này giúp em được không ạ

Tmp1 = Split(sArr(i, 1), "-")
If i < UBound(sArr) Then
Tmp2 = Split(sArr(i + 1, 1), "-")
Else
Tmp2 = Split("Het-roi", "_")
End If
If Tmp1(0) <> Tmp2(0)
"Het-roi" có nghĩa là Hết rồi ( Không còn nữa)
Tmp2 = Split("Het-roi", "_") Khi đó Tmp2(0)="Het" khác với Tmp1(0)
:D
 
Upvote 0
Không biết có phải vầy không?
Bác ơi em làm phiền bác chút xíu, chạy code trên bị 1 cái đó là tất cả các công thức cũ của bàng tính bị chuyển về dán value hết, bác sửa code giúp em để khi chạy code xong các công thức cũ vẫn không thay đổi được không ạ, em cảm ơn
 
Upvote 0
Bác ơi em làm phiền bác chút xíu, chạy code trên bị 1 cái đó là tất cả các công thức cũ của bàng tính bị chuyển về dán value hết, bác sửa code giúp em để khi chạy code xong các công thức cũ vẫn không thay đổi được không ạ, em cảm ơn
Bạn xem code ở #10 rất hay và đúng với mục đích của bạn.
 
Upvote 0
Web KT
Back
Top Bottom