LẬP BÁO CÁO GIÁ BÁN TRUNG BÌNH HÀNG THÁNG TRONG NĂM BẰNG VBA

Liên hệ QC

MrBao69

Thành viên mới
Tham gia
24/5/21
Bài viết
22
Được thích
1
Chào mọi người.

Em có file data, giờ em muốn xử lý giá bán từng mã hàng thì dùng VBA xử lý như thế nào ạ

(đính kèm file)

1/ SHEET DATA

1622534384454.png

2/ SHEET BÁO CÁO GIÁ 2021
Căn cứ cột R (mã hàng), cột C (ngày hóa đơn), cột J (số lượng), cột O (doanh thu chưa VAT), để xử lý giá bán trung bình hàng tháng như mẫu bên dưới ạ
1622534262607.png


Trân trọng kính chào!

MrBao69
 

File đính kèm

  • Bao gia 2021.xlsm
    521.6 KB · Đọc: 13
Chào mọi người.

Em có file data, giờ em muốn xử lý giá bán từng mã hàng thì dùng VBA xử lý như thế nào ạ

(đính kèm file)

1/ SHEET DATA

View attachment 259834

2/ SHEET BÁO CÁO GIÁ 2021
Căn cứ cột R (mã hàng), cột C (ngày hóa đơn), cột J (số lượng), cột O (doanh thu chưa VAT), để xử lý giá bán trung bình hàng tháng như mẫu bên dưới ạ
View attachment 259833


Trân trọng kính chào!

MrBao69
Giá bán tính thế nào ta.Mà cái mã hàng bên sheets giá SP có chưa vậy.
 
Upvote 0
Tạm thời ghi cho bạn kết quả trung gian đã nhé. Lúc rảnh làm tiếp. Chạy sub Loc, kết quả ghi bắt đầu từ V1 của Data
 

File đính kèm

  • Bao gia 2021_MrBao69.xlsm
    528.3 KB · Đọc: 11
Upvote 0
Tạm thời ghi cho bạn kết quả trung gian đã nhé. Lúc rảnh làm tiếp. Chạy sub Loc, kết quả ghi bắt đầu từ V1 của Data
Bạn giỏi quá, code chạy rất nhanh, nếu mà ra dc kết quả như mẫu trên là quá tuyệt với, Hóng kết quả xử lý tiếp theo của bạn quá. Cám ơn và chúc bạn Maika8008 thật nhiều sức khỏe.
 
Upvote 0
Chào bạn,
Giá tính Giá bán trung bình nhé,
Ví dụ Tháng mã hàng B có tổng doanh thu chưa VAT: 5.534.475.000, sản lượng: 1.015.500 -> giá bán trung bình tháng 01 là: 5.450, và tường tự những tháng khác
View attachment 259844

Thanks bạn nhé
Thử code này xem chỉnh lại cho đúng cái tiêu đề ở sheets giá mình bỏ chữ có dấu đi.
Mã:
Sub tinhgia()
   Dim arr, i As Long, lr As Long, dic As Object, a As Long, b As Long, kq, dk As String, j As Integer, s As String
   Set dic = CreateObject("scripting.dictionary")
   With Sheets("gia_sp")
        lr = .Range("B" & Rows.Count).End(xlUp).Row
        If lr < 3 Then GoTo xong
        .Range("C3:O" & lr).ClearContents
        kq = .Range("B2:P" & lr).Value
  End With
      With Sheets("data")
          lr = .Range("C" & Rows.Count).End(xlUp).Row
          arr = .Range("C2:R" & lr).Value
      End With
  For i = 1 To UBound(arr)
      s = Month(arr(i, 1))
      If Len(s) = 1 Then s = "0" & s
      dk = "Gia ban_T" & s & "." & Format(Right(Year(arr(i, 1)), 2), "##") & "#" & arr(i, 16)
      If Not dic.exists(dk) Then
         dic.Add dk, Array(arr(i, 8), arr(i, 13))
      Else
         dic.Item(dk) = Array(dic.Item(dk)(0) + arr(i, 8), dic.Item(dk)(1) + arr(i, 13))
      End If
  Next i
  For i = 2 To UBound(kq)
      For j = 2 To UBound(kq, 2)
          dk = kq(1, j) & "#" & kq(i, 1)
          If dic.exists(dk) Then
             kq(i, j) = dic.Item(dk)(1) / dic.Item(dk)(0)
          End If
      Next j
  Next i
  With Sheets("gia_sp")
      lr = .Range("B" & Rows.Count).End(xlUp).Row
     .Range("B2:P" & lr).Value = kq
  End With
xong:
  Set dic = Nothing
End Sub
 

File đính kèm

  • Bao gia 2021.xlsm
    527 KB · Đọc: 12
Upvote 0
Thử code này xem chỉnh lại cho đúng cái tiêu đề ở sheets giá mình bỏ chữ có dấu đi.
Mã:
Sub tinhgia()
   Dim arr, i As Long, lr As Long, dic As Object, a As Long, b As Long, kq, dk As String, j As Integer, s As String
   Set dic = CreateObject("scripting.dictionary")
   With Sheets("gia_sp")
        lr = .Range("B" & Rows.Count).End(xlUp).Row
        If lr < 3 Then GoTo xong
        .Range("C3:O" & lr).ClearContents
        kq = .Range("B2:P" & lr).Value
  End With
      With Sheets("data")
          lr = .Range("C" & Rows.Count).End(xlUp).Row
          arr = .Range("C2:R" & lr).Value
      End With
  For i = 1 To UBound(arr)
      s = Month(arr(i, 1))
      If Len(s) = 1 Then s = "0" & s
      dk = "Gia ban_T" & s & "." & Format(Right(Year(arr(i, 1)), 2), "##") & "#" & arr(i, 16)
      If Not dic.exists(dk) Then
         dic.Add dk, Array(arr(i, 8), arr(i, 13))
      Else
         dic.Item(dk) = Array(dic.Item(dk)(0) + arr(i, 8), dic.Item(dk)(1) + arr(i, 13))
      End If
  Next i
  For i = 2 To UBound(kq)
      For j = 2 To UBound(kq, 2)
          dk = kq(1, j) & "#" & kq(i, 1)
          If dic.exists(dk) Then
             kq(i, j) = dic.Item(dk)(1) / dic.Item(dk)(0)
          End If
      Next j
  Next i
  With Sheets("gia_sp")
      lr = .Range("B" & Rows.Count).End(xlUp).Row
     .Range("B2:P" & lr).Value = kq
  End With
xong:
  Set dic = Nothing
End Sub
Bạn Snow thêm code tự động thêm mới sản phẩm (cột B), Tiêu đề giá bán từ sheet("data") nữa là quá ok
Cám ơn bạn,
Bài đã được tự động gộp:

Kết quả cuối cùng: bấm nút để chạy!
Bạn cho Cột (C) tháng 12.2020, để trống là dc ko ạ, Thanks
1622600858485.png
 
Upvote 0
Bạn Snow thêm code tự động thêm mới sản phẩm (cột B), Tiêu đề giá bán từ sheet("data") nữa là quá ok
Cám ơn bạn,
Bài đã được tự động gộp:


Bạn cho Cột (C) tháng 12.2020, để trống là dc ko ạ, Thanks
View attachment 259881
Không vấn đề gì.
Bài đã được tự động gộp:

Không cần phải ghi sang bảng phụ có được không bạn.
Chưa hiểu ý bạn lắm. File kèm ở bài #7 đâu có ghi sang bảng phụ nào.
 

File đính kèm

  • Bao gia 2021_MrBao69.xlsm
    542.5 KB · Đọc: 9
Upvote 0
Web KT

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

Back
Top Bottom