Cộng dồn hóa đơn thanh toán (1 người xem)

Liên hệ QC

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

toandiennuoc123

Thành viên thường trực
Tham gia
7/3/12
Bài viết
239
Được thích
9
Chào các bạn ! Tôi có 1 file trong đó có rất nhiều hóa đơn được tổng hợp lại, tên của sản phẩm thì giống nhau nhưng số lượng thì khác nay tôi muốn cột số lượng tự động cộng lại với nhau của cùng 1 tên sản phẩm. Mời các bạn xem file đính kèm sẽ rõ hơn. Xin chân thành cám ơn các bạn.
 

File đính kèm

Chào các bạn ! Tôi có 1 file trong đó có rất nhiều hóa đơn được tổng hợp lại, tên của sản phẩm thì giống nhau nhưng số lượng thì khác nay tôi muốn cột số lượng tự động cộng lại với nhau của cùng 1 tên sản phẩm. Mời các bạn xem file đính kèm sẽ rõ hơn. Xin chân thành cám ơn các bạn.
Hy vọng đúng ý bạn, hên xui nghe! File 2 mới hoàn chỉnh
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mã:
Sub Tong()  
Dim Dic, Sarr
 Dim i, j As Long, k As Long
Sarr = Range([B5], [B65000].End(xlUp)).Resize(, 5)
Set Dic = CreateObject("Scripting.Dictionary")
ReDim dArr(1 To UBound(Sarr), 1 To 6)
  For i = 1 To UBound(Sarr)
      Tmp = Sarr(i, 1)
        With Dic
            If Not .Exists(Tmp) Then
                k = k + 1
                .Add Tmp, k
             dArr(k, 1) = k
            For j = 1 To 5
                dArr(k, j + 1) = Sarr(i, j)
            Next j
         Else
             dArr(.Item(Tmp), 6) = dArr(.Item(Tmp), 6) + Sarr(i, 5)
         End If
    End With
  Next i
  [H5:M65000].ClearContents
  [H5].Resize(k, 6).Value = dArr
  Set Dic = Nothing
  End Sub
Sửa của Giải Pháp một tí. Còn sửa cộng khối lượng. Hi
 
Lần chỉnh sửa cuối:
Upvote 0
Mã:
Sub Tong()  
Dim Dic, Sarr
 Dim i, j As Long, k As Long
Sarr = Range([B5], [B65000].End(xlUp)).Resize(, 5)
Set Dic = CreateObject("Scripting.Dictionary")
ReDim dArr(1 To UBound(Sarr), 1 To 6)
  For i = 1 To UBound(Sarr)
      Tmp = Sarr(i, 1)
        With Dic
            If Not .Exists(Tmp) Then
                k = k + 1
                .Add Tmp, k
             dArr(k, 1) = k
            For j = 1 To 5
                dArr(k, j + 1) = Sarr(i, j)
            Next j
         Else
             dArr(.Item(Tmp), 6) = dArr(.Item(Tmp), 6) + Sarr(i, 5)
         End If
    End With
  Next i
  [H5:M65000].ClearContents
  [H5].Resize(k, 6).Value = dArr
  Set Dic = Nothing
  End Sub
Sửa của Giải Pháp một tí. Còn sửa cộng khối lượng. Hi
Nếu code này thì sửa lại chút vầy mới đúng
Mã:
Sub Tong()
Dim Dic, Sarr
  Dim i, j As Long, k As Long
Sarr = Range([B5], [B65000].End(xlUp)).Resize(, 5)
Set Dic = CreateObject("Scripting.Dictionary")
ReDim dArr(1 To UBound(Sarr), 1 To 6)
  For i = 1 To UBound(Sarr)
      Tmp = Sarr(i, 1)
        With Dic
            If Not .Exists(Tmp) Then
                k = k + 1
                .Add Tmp, k
             dArr(k, 1) = k
            For j = 1 To 5
                dArr(k, j + 1) = Sarr(i, j)
            Next j
         Else
             dArr(.Item(Tmp), 6) = dArr(.Item(Tmp), 6) + Sarr(i, 5)
             dArr(.Item(Tmp), 4) = dArr(.Item(Tmp), 4) + CInt(Sarr(i, 3))
         End If
    End With
  Next i
  [H5:M65000].ClearContents
  [H5].Resize(k, 6).Value = dArr
  Set Dic = Nothing
  End Sub
 
Upvote 0
Cho mình hỏi trong File bạn chủ thớt gửi có nút cộng dồn (màu xanh ý) , tại sao khi viết sub xong mình muốn gán sub đó cho cái nút xanh xanh ấy mà không gán được nhỉ, tức là bấm phải chuột vào nút đó để gán Sub chạy mà không có được , và nếu muốn xóa cái nút đó đi cũng ko xóa được là sao nhỉ...
 
Upvote 0
Nếu code này thì sửa lại chút vầy mới đúng
Mã:
Sub Tong()
Dim Dic, Sarr
  Dim i, j As Long, k As Long
Sarr = Range([B5], [B65000].End(xlUp)).Resize(, 5)
Set Dic = CreateObject("Scripting.Dictionary")
ReDim dArr(1 To UBound(Sarr), 1 To 6)
  For i = 1 To UBound(Sarr)
      Tmp = Sarr(i, 1)
        With Dic
            If Not .Exists(Tmp) Then
                k = k + 1
                .Add Tmp, k
             dArr(k, 1) = k
            For j = 1 To 5
                dArr(k, j + 1) = Sarr(i, j)
            Next j
         Else
             dArr(.Item(Tmp), 6) = dArr(.Item(Tmp), 6) + Sarr(i, 5)
             dArr(.Item(Tmp), 4) = dArr(.Item(Tmp), 4) + CInt(Sarr(i, 3))
         End If
    End With
  Next i
  [H5:M65000].ClearContents
  [H5].Resize(k, 6).Value = dArr
  Set Dic = Nothing
  End Sub
Ừa làm xong mới để ý thấy, sửa mà chạy ổn là ok. Ha ha
 
Upvote 0
Cho mình hỏi trong File bạn chủ thớt gửi có nút cộng dồn (màu xanh ý) , tại sao khi viết sub xong mình muốn gán sub đó cho cái nút xanh xanh ấy mà không gán được nhỉ, tức là bấm phải chuột vào nút đó để gán Sub chạy mà không có được , và nếu muốn xóa cái nút đó đi cũng ko xóa được là sao nhỉ...
Bạn ấy tạo nút bằng Activex Control nên không nhấp phải vào nút đó được, mà đáng lý ra chúng ta phải tạo nút ở nhóm Form Controls.
Hinh.jpg
Để chọn nút đó và xóa thì ta bật nút lệnh Design Model sau đó nháy chọn nút và xóa bình thường.
 
Upvote 0
Chào các bạn ! Tôi có 1 file trong đó có rất nhiều hóa đơn được tổng hợp lại, tên của sản phẩm thì giống nhau nhưng số lượng thì khác nay tôi muốn cột số lượng tự động cộng lại với nhau của cùng 1 tên sản phẩm. Mời các bạn xem file đính kèm sẽ rõ hơn. Xin chân thành cám ơn các bạn.

Góp đoạn code
Mã:
Public Sub CongDon()
Dim DL, r As Long, c As Long, i

DL = Sheet1.Range("A5:F22")
i = 1

For r = 2 To UBound(DL)
If DL(r, 2) = DL(i, 2) Then
For c = 1 To UBound(DL, 2)
If c > 3 Then DL(i, c) = DL(i, c) + DL(r, c)
DL(r, c) = ""
Next c
Else
i = r
End If
Next r

Sheet1.Range("H5:M22").ClearContents
Sheet1.Range("H5:M22") = DL
End Sub
 
Upvote 0
Cho mình hỏi trong File bạn chủ thớt gửi có nút cộng dồn (màu xanh ý) , tại sao khi viết sub xong mình muốn gán sub đó cho cái nút xanh xanh ấy mà không gán được nhỉ, tức là bấm phải chuột vào nút đó để gán Sub chạy mà không có được , và nếu muốn xóa cái nút đó đi cũng ko xóa được là sao nhỉ...
Mình để ý thấy các nút Command Button hình như không xóa được ý ^^
 
Upvote 0
Bạn ấy tạo nút bằng Activex Control nên không nhấp phải vào nút đó được, mà đáng lý ra chúng ta phải tạo nút ở nhóm Form Controls.
View attachment 150366
Để chọn nút đó và xóa thì ta bật nút lệnh Design Model sau đó nháy chọn nút và xóa bình thường.

Em làm theo và đã xóa được nó rồi ạ, xin hỏi thêm tác giả là tại sao cái Button trong Form Controls với cái Command Button trong Activex Control khác nhau như thế nào mà tại sao 1 cái có thể gắn Sub vào còn cái kia thì không ạ. Tổng quát hơn thì giữa 2 cái Form Controls với cái Activex Control có gì khác nhau ạ. Em xin cảm ơn !
 
Upvote 0
Em làm theo và đã xóa được nó rồi ạ, xin hỏi thêm tác giả là tại sao cái Button trong Form Controls với cái Command Button trong Activex Control khác nhau như thế nào mà tại sao 1 cái có thể gắn Sub vào còn cái kia thì không ạ. Tổng quát hơn thì giữa 2 cái Form Controls với cái Activex Control có gì khác nhau ạ. Em xin cảm ơn !
Cái khác thì mình chưa rành lắm, còn việc gắn Sub thì vẫn được mà bạn, cả 2 đều gắn được Sub hết có điều Activex Control thì sub đặt trong sheet, con Form Controls thì đặt trong Module.
 
Upvote 0
Cái khác thì mình chưa rành lắm, còn việc gắn Sub thì vẫn được mà bạn, cả 2 đều gắn được Sub hết có điều Activex Control thì sub đặt trong sheet, con Form Controls thì đặt trong Module.

Đoạn gạch chân không đúng, trong sheet rõ ràng có code mà khi tạo Command Button từ Activex Control sau đo phải chuột để gán sub nhưng đâu có thấy chổ nào để gán đâu

Untitled.jpg
 
Upvote 0
Upvote 0
Thôi chết, từ bấy giờ mới để ý mình hơi bị zô ziên vì chen vô đề tài của bạn chủ thớt để hỏi sang vấn đề khác, có gì hổng phải xin các Mod lượng thứ cho em nghen.

Cảm ơn tác giả giaiphap (vì em thấy tác giả tham gia tu năm 2007 chắc cũng tầm tuổi với các thành viên gạo cội nên em gọi vầy --=0--=0) và bạn doatmenhhon ( bạn này nhìn vẫn trẻ chắc gọi bạn được rồi --=0--=0--=0--=0 ) nha .
 
Upvote 0
Ý của ku Phong là không Gán sub cho cái ActiveX control phải hok (Assign Macro ấy). Với ActiveX Controls thì phải code trực tiếp lên sự kiện Change / Click ...hay gì gì của nó. Còn Form Control thì không thể mà chỉ có thể Assign Macro cho nó... Đại loại là vậy

Cảm ơn đại ca --=0--=0
 
Upvote 0
Cảm ơn tác giả giaiphap (vì em thấy tác giảtham gia tu năm 2007 chắc cũng tầm tuổi với các thành viên gạo cội nên em gọi vầy --=0--=0)
Mặc dù là thành viên từ năm 2007 nhưng mới có quan tâm khoảng 3 tháng nay thôi, nên trình độ code còn mềm lắm, học hỏi rất nhiều từ những thành viên trẻ mặc dù là thành viên sau nhưng có những bài viết rất hay, rất đáng học hỏi.|||||
 
Upvote 0
Mặc dù là thành viên từ năm 2007 nhưng mới có quan tâm khoảng 3 tháng nay thôi, nên trình độ code còn mềm lắm, học hỏi rất nhiều từ những thành viên trẻ mặc dù là thành viên sau nhưng có những bài viết rất hay, rất đáng học hỏi.|||||
Ước gì mình cũng viết code hay như anh ấy --=0--=0--=0
 
Upvote 0
Vẫn chưa ổn, khi bị xóa dòng bất kì thì nó không cộng dòng tiếp theo.
 
Upvote 0

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

Back
Top Bottom