1/ Xin có trả phí hay miễn phí đó bạn?Xin CODE
Cảm ơn befaint đã quan tâm. Tôi vẫn muốn để dòng tổng cộng phía dưới - tổng số mặt hàng chỉ có khoảng 100 thôi mà thường trong kỳ chưa thấy phát sinh bán đủ 100 mặt hàng bao giờ. Nếu vậy xin để 500 dòng rồi để tổng cộng phía dưới có được chăng - Xin bạn giúp miễn phí được không ?1/ Xin có trả phí hay miễn phí đó bạn?
2/ "- Tự động Filter gọn biểu mẫu lại (Ẩn những dòng không có dữ liệu đi)"
Bạn đang để trong bảng báo cáo 95 dòng ghi kết quả, nếu kết quả cần tìm trả về 200 kết quả thì 105 kết quả còn lại ghi vào đâu?
Người đọc báo cáo thường chú ý tới ý chính, số tổng. Vậy sao không để dòng tính tổng lên đầu ấy. Phía dưới cái đuôi dài mấy chục ki lô mét cũng không sợ vướng bận gì.
Bài #2 có 2 câu mà.Cảm ơn befaint đã quan tâm. Tôi vẫn muốn để dòng tổng cộng phía dưới - tổng số mặt hàng chỉ có khoảng 100 thôi mà thường trong kỳ chưa thấy phát sinh bán đủ 100 mặt hàng bao giờ. Nếu vậy xin để 500 dòng rồi để tổng cộng phía dưới có được chăng - Xin bạn giúp miễn phí được không ?
Bài #3 đã trả lời bạn đủ 2 ý màBài #2 có 2 câu mà.
Mình cũng hiểu và chắc chẳng ai ý kiến gì về điều đó đâu bạn ạ. Có chăng mình sẽ sửa lại câu "Xin bạn giúp miễn phí được không ?" thành "Xin các bạn giúp miễn phí được không ?" bạn befaint nhỉÝ mình hỏi là chung chung với mọi người. Còn bạn trả lời là riêng với mình, như thế hơi phân biệt và mọi người ganh tị thì sao.
Chình 1 chút code của bạn không biết có đúng không.Tôi có sử dụng đoạn code của thầy Ba tê để tùy biến như File đính kèm
- DO TRÌNH THẤP KÉM Nên có 2 ý tùy biến chưa được
Ý thứ nhất : Số lượng và thành tiền của từng loại hàng không tổng cộng được mà nó chuyển sang báo cáo như Vlookup sang thôi
Ý thứ 2 : Những dòng có báo hủy tại cột H thì Số lượng đó bỏ qua không tổng cộng vào mã hàng đó tôi không làm đươc
Rất mong nhận được sự trợ giúp của các bạn
Xin trân trọng cảm ơn
Public Sub s_BC_Ban()
Dim Dic As Object, aDmHang(), aXuat(), dArr(), MaHang As String
Dim I As Long, J As Long, K As Long, R As Long, Rws As Long, fDate As Long, eDate As Long
Set Dic = CreateObject("Scripting.Dictionary")
aXuat = Sheets("DATA").Range("B6", Sheets("DATA").Range("C6").End(xlDown)).Resize(, 22).Value
R = UBound(aXuat)
ReDim dArr(1 To R, 1 To 8)
With Sheets("BC_ban")
fDate = .Range("N2").Value2
eDate = DateSerial(Year(.Range("N2")), Month(.Range("N2")) + 1, 0)
For I = 1 To R
If aXuat(I, 12) <> "HY" Then
If aXuat(I, 2) >= fDate Then
If aXuat(I, 2) <= eDate Then
MaHang = aXuat(I, 4)
If Not Dic.Exists(MaHang) Then
K = K + 1
Dic.Item(MaHang) = K
dArr(K, 1) = K
For J = 2 To 4
dArr(K, J) = aXuat(I, J + 2)
Next J
dArr(K, 3) = aXuat(I, 18)
dArr(K, 4) = aXuat(I, 19)
dArr(K, 6) = aXuat(I, 20)
dArr(K, 7) = aXuat(I, 22)
Else
Rws = Dic.Item(MaHang)
dArr(Rws, 3) = dArr(Rws, 3) + aXuat(I, 18)
dArr(Rws, 4) = dArr(Rws, 4) + aXuat(I, 19)
End If
End If
End If
End If
Next I
For I = 1 To K
If dArr(I, 6) > 0 Then dArr(I, 5) = dArr(I, 7) / dArr(I, 6)
Next I
.Rows("6:5011").Hidden = False
.Range("E6:L5010").ClearContents
.Range("E6").Resize(R, 8) = dArr
.Rows(6 + K & ":5010").Hidden = True
End With
Set Dic = Nothing
End Sub
Thưa ThầyChình 1 chút code của bạn không biết có đúng không.
Mã:Public Sub s_BC_Ban() Dim Dic As Object, aDmHang(), aXuat(), dArr(), MaHang As String Dim I As Long, J As Long, K As Long, R As Long, Rws As Long, fDate As Long, eDate As Long Set Dic = CreateObject("Scripting.Dictionary") aXuat = Sheets("DATA").Range("B6", Sheets("DATA").Range("C6").End(xlDown)).Resize(, 22).Value R = UBound(aXuat) ReDim dArr(1 To R, 1 To 8) With Sheets("BC_ban") fDate = .Range("N2").Value2 eDate = DateSerial(Year(.Range("N2")), Month(.Range("N2")) + 1, 0) For I = 1 To R If aXuat(I, 12) <> "HY" Then If aXuat(I, 2) >= fDate Then If aXuat(I, 2) <= eDate Then MaHang = aXuat(I, 4) If Not Dic.Exists(MaHang) Then K = K + 1 Dic.Item(MaHang) = K dArr(K, 1) = K For J = 2 To 4 dArr(K, J) = aXuat(I, J + 2) Next J dArr(K, 3) = aXuat(I, 18) dArr(K, 4) = aXuat(I, 19) dArr(K, 6) = aXuat(I, 20) dArr(K, 7) = aXuat(I, 22) Else Rws = Dic.Item(MaHang) dArr(Rws, 3) = dArr(Rws, 3) + aXuat(I, 18) dArr(Rws, 4) = dArr(Rws, 4) + aXuat(I, 19) End If End If End If End If Next I For I = 1 To K If dArr(I, 6) > 0 Then dArr(I, 5) = dArr(I, 7) / dArr(I, 6) Next I .Rows("6:5011").Hidden = False .Range("E6:L5010").ClearContents .Range("E6").Resize(R, 8) = dArr .Rows(6 + K & ":5010").Hidden = True End With Set Dic = Nothing End Sub
Ợ, bài #6 xong lâu rồi mà bạn.
Ợ, bài #6 xong lâu rồi mà bạn.
Bạn hỏi ai đó. File bài trên (#11) không phải bài #6 nhé bạn.- Phần khi báo hủy thì bỏ qua thì được rồi
- Nhưng phần tên và đơn vị tính nó theo số lần xuất hiện liên tiếp mà số lượng và thành tiền chỉ nhận 1 lần đầu tiên xuất hiện trong kỳ thôi. Thầy chỉnh giúp
Xin cảm ơn Thầy. Code chạy chuẩn rồi - Cách code của thầy tôi sẽ phải nghiên cứu dài mới hiểu đượcÝ mình hỏi là chung chung với mọi người. Còn bạn trả lời là riêng với mình, như thế hơi phân biệt và mọi người ganh tị thì sao.
Thưa thầy :Chình 1 chút code của bạn không biết có đúng không.
Mã:Public Sub s_BC_Ban() Dim Dic As Object, aDmHang(), aXuat(), dArr(), MaHang As String Dim I As Long, J As Long, K As Long, R As Long, Rws As Long, fDate As Long, eDate As Long Set Dic = CreateObject("Scripting.Dictionary") aXuat = Sheets("DATA").Range("B6", Sheets("DATA").Range("C6").End(xlDown)).Resize(, 22).Value R = UBound(aXuat) ReDim dArr(1 To R, 1 To 8) With Sheets("BC_ban") fDate = .Range("N2").Value2 eDate = DateSerial(Year(.Range("N2")), Month(.Range("N2")) + 1, 0) For I = 1 To R If aXuat(I, 12) <> "HY" Then If aXuat(I, 2) >= fDate Then If aXuat(I, 2) <= eDate Then MaHang = aXuat(I, 4) If Not Dic.Exists(MaHang) Then K = K + 1 Dic.Item(MaHang) = K dArr(K, 1) = K For J = 2 To 4 dArr(K, J) = aXuat(I, J + 2) Next J dArr(K, 3) = aXuat(I, 18) dArr(K, 4) = aXuat(I, 19) dArr(K, 6) = aXuat(I, 20) dArr(K, 7) = aXuat(I, 22) Else Rws = Dic.Item(MaHang) dArr(Rws, 3) = dArr(Rws, 3) + aXuat(I, 18) dArr(Rws, 4) = dArr(Rws, 4) + aXuat(I, 19) End If End If End If End If Next I For I = 1 To K If dArr(I, 6) > 0 Then dArr(I, 5) = dArr(I, 7) / dArr(I, 6) Next I .Rows("6:5011").Hidden = False .Range("E6:L5010").ClearContents .Range("E6").Resize(R, 8) = dArr .Rows(6 + K & ":5010").Hidden = True End With Set Dic = Nothing End Sub
Thưa thầy :Ý mình hỏi là chung chung với mọi người. Còn bạn trả lời là riêng với mình, như thế hơi phân biệt và mọi người ganh tị thì sao.
Cảm ơn thầy nhiều - Tôi đã sửa đoạn này res(idex, 7) = arr(i, 21) thành res(idex, 7) = res(idex, 7) + arr(i, 21) đúng không thầyBạn tải lại file ở bài #6 nhé.
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2