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
Web KT

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

Back
Top Bottom