Nhờ đánh số thứ tự theo tên xí nghiệp & tự động chèn dòng tính tổng

Liên hệ QC

nguyenmanhnam

Thành viên tiêu biểu
Tham gia
24/7/10
Bài viết
434
Được thích
266
Nôi dung bài toán của em được mô tả trong file đính kèm (Sheet1 là dữ liệu đầu vào, Sheet2 là dữ liệu đầu ra mong muốn).

Vì dữ liệu thật của em có khoảng 20 cột, trong file đính kèm em chỉ trích 2 cột ra, hơn nữa đây lại là báo cáo chính thức in ra nên em không áp dụng được Pivot Table

Kính mong nhận được sự giúp đỡ của mọi người (làm bằng Excel + VBA càng tốt)
 

File đính kèm

  • STT.xlsx
    14.3 KB · Đọc: 32
Nôi dung bài toán của em được mô tả trong file đính kèm (Sheet1 là dữ liệu đầu vào, Sheet2 là dữ liệu đầu ra mong muốn).

Vì dữ liệu thật của em có khoảng 20 cột, trong file đính kèm em chỉ trích 2 cột ra, hơn nữa đây lại là báo cáo chính thức in ra nên em không áp dụng được Pivot Table

Kính mong nhận được sự giúp đỡ của mọi người (làm bằng Excel + VBA càng tốt)
Thứ 1 phát xem - ô G1 đặt chữ CỘNG nhé :
PHP:
Sub InsRow()
Dim i As Long
For i = 42 To 4 Step -1
    If Cells(i, 2).Value <> Cells(i - 1, 2).Value Then
        Cells(i, 2).EntireRow.Insert
        Cells(i, 2).Value = [G1].Value
        Cells(i, 3).Formula = Application.WorksheetFunction.SumIf(Range(Cells(3, 2), Cells(i, 2)), Cells(i, 2).Offset(-1).Value, Range(Cells(3, 3), Cells(i, 3)))
    End If
    Next
End Sub
 
Lần chỉnh sửa cuối:
Thứ 1 phát xem - ô G1 đặt chữ CỘNG nhé :
PHP:
Sub InsRow()
Dim i As Long
For i = 42 To 4 Step -1
    If Cells(i, 2).Value <> Cells(i - 1, 2).Value Then
        Cells(i, 2).EntireRow.Insert
        Cells(i, 2).Value = [G1].Value
        Cells(i, 3).Formula = Application.WorksheetFunction.SumIf(Range(Cells(3, 2), Cells(i, 2)), Cells(i, 2).Offset(-1).Value, Range(Cells(3, 3), Cells(i, 3)))
    End If
    Next
End Sub
Còn thiếu STT kìa HMT

Có những trường hợp nếu biết kết hợp các công cụ sẵn có của Excel ta hoàn toàn có thể giải quyết vấn đề mà không cần phải dùng đến Macro. Như trong trường hợp này
[video=youtube_share;1HWM5aoXKQM]http://youtu.be/1HWM5aoXKQM[/video]
 
Còn thiếu STT kìa HMT

Có những trường hợp nếu biết kết hợp các công cụ sẵn có của Excel ta hoàn toàn có thể giải quyết vấn đề mà không cần phải dùng đến Macro. Như trong trường hợp này
[video=youtube_share;1HWM5aoXKQM]http://youtu.be/1HWM5aoXKQM[/video]
Cái STT đó chắc bạn ấy thừa sức làm dù là công thức hay code. Em nghĩ người dùng cũng nên vận động não một chút khi mà bạn ấy hoàn toàn có khả năng giải quyết được. Lâu rồi em không viết code nên viết thử cho đỡ lụt não thôi chứ giải pháp của anh quá ổn rồi. Hihi
 
Nôi dung bài toán của em được mô tả trong file đính kèm (Sheet1 là dữ liệu đầu vào, Sheet2 là dữ liệu đầu ra mong muốn).

Vì dữ liệu thật của em có khoảng 20 cột, trong file đính kèm em chỉ trích 2 cột ra, hơn nữa đây lại là báo cáo chính thức in ra nên em không áp dụng được Pivot Table

Kính mong nhận được sự giúp đỡ của mọi người (làm bằng Excel + VBA càng tốt)
Thử code này coi sao. Viết tạm cho 4 cột dữ liệu
PHP:
Sub CONG_STT()
Dim data(), Res(), i As Long, k As Long, n As Integer, x As Integer, STT As Integer
data = Sheet1.Range(Sheet1.[B3], Sheet1.[B65536].End(3).Offset(1)).Resize(, 4).Value
ReDim Res(1 To UBound(data) * 2, 1 To 5)
STT = 1: Res(1, 1) = STT
   For i = 1 To UBound(data) - 1
      If data(i, 1) = data(i + 1, 1) Then
         k = k + 1: n = n + 1
         For x = 2 To 5
            Res(k, x) = data(i, x - 1)
         Next
      ElseIf data(i, 1) <> "" Then
         k = k + 2: n = n + 1
         For x = 2 To 5
            Res(k - 1, x) = data(i, x - 1)
            Res(k, x) = "=Sum(R[-1]C:R[-" & n & "]C)"
         Next
         STT = STT + 1
         Res(k + 1, 1) = STT: Res(k, 2) = "C" & ChrW(7897) & "ng"
         n = 0
      End If
   Next
   Sheet2.[A3:E10000].ClearContents
   Sheet2.[A3].Resize(k, 5) = Res
End Sub
 

File đính kèm

  • Copy of STT.rar
    13.2 KB · Đọc: 15
Web KT

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

Back
Top Bottom