VBA tạo báo cáo X-N-T

Liên hệ QC

soledad_90

Thành viên thường trực
Tham gia
12/1/10
Bài viết
253
Được thích
47
Giới tính
Nam
1612414523811.png

Xin nhờ sự giúp đỡ từ diễn đàn ạ !

Em có tạo 1 file dữ liệu chi tiết tồn Đk, nhập TK, xuất TK được tổng hợp trong 1 file excel với các Sheet tương ứng
với việc làm thủ công để ra báo cáo tổng hợp : XUất - Nhập - Tồn trong tháng sẽ không hiệu quả.
Em mong 1 được sự giúp đỡ từ diễn đàn cho 1 đoạn Code cho bài toàn trên ạ

Em xin cảm ơn !
 

File đính kèm

  • 210203_BAOCAO X-N-T _THANG 01.xls
    377 KB · Đọc: 20
Dữ liệu của bạn như vầy thì có trời mới tổng hợp cho chính xác được:

Customer Đ Dài
Anh
Anh-Sebago
Áo
2​
Áo
3​
Áo-Sebago
Argentina
Bỉ
2​
Bỉ
3​
Pháp
4​
Pháp
5​
Việt Nam
8​
Việt Nam
9​
Ý
Nhật Bản
8​
Nhật Bản
9​

PHP:
Sub TimDauCachDauVaCuoi()
 Dim Cls As Range, W As Integer, VTr As Byte
 
 For Each Cls In Range([B3], [B3].End(xlDown))
    VTr = InStr(Cls.Value, Space(1))
    If VTr = 1 Or VTr = Len(Cls.Value) Then
        W = W + 1:
        Cls.Interior.ColorIndex = 34 + VTr
    End If
 Next Cls
 [b1].Value = W
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Dữ liệu của bạn như vầy thì có trời mới tổng hợp cho chính xác được:

Customer Đ Dài
Anh
Anh-Sebago
Áo
2​
Áo
3​
Áo-Sebago
Argentina
Bỉ
2​
Bỉ
3​
Pháp
4​
Pháp
5​
Việt Nam
8​
Việt Nam
9​
Ý
Nhật Bản
8​
Nhật Bản
9​

PHP:
Sub TimDauCachDauVaCuoi()
Dim Cls As Range, W As Integer, VTr As Byte

For Each Cls In Range([B3], [B3].End(xlDown))
    VTr = InStr(Cls.Value, Space(1))
    If VTr = 1 Or VTr = Len(Cls.Value) Then
        W = W + 1:
        Cls.Interior.ColorIndex = 34 + VTr
    End If
Next Cls
[b1].Value = W
End Sub
Em xin cảm ơn sự góp ý từ anh ạ.
Trong quá trình nhập liệu hàng ngày, thao tác không chuẩn nên dẫn tới .

Code này anh tạo ra có thể khắc phục được lỗi trên không ạ .
 
Upvote 0
/-)ược, thêm 1 câu lệnh dùng hàm Trim$() mà khử khoảng trắng đầu & cuối của nhóm từ.
Mã:
       Cls.Interior.ColorIndex = 34 + VTr
       Cls.Value = Trim$(Cls.Value)
 
Upvote 0
/-)ược, thêm 1 câu lệnh dùng hàm Trim$() mà khử khoảng trắng đầu & cuối của nhóm từ.
Mã:
       Cls.Interior.ColorIndex = 34 + VTr
       Cls.Value = Trim$(Cls.Value)
Em có cho chạy code mà báo lỗi như này ạ .
Nhờ a chỉ và tạo code cho xuất-nhập-tồn với ạ
 

File đính kèm

  • 210203_BAOCAO X-N-T _THANG 01.xls
    393.5 KB · Đọc: 8
Upvote 0
(1) Em có cho chạy code mà báo lỗi như này ạ .
(2) Nhờ a chỉ và tạo code cho xuất-nhập-tồn với ạ
(1) Như thế này là như thế nào? Bạn không thể chép ra đây được ư?
(1.1) Bạn chạy Code trên trang tính nào?
(2) 'xuất-nhập-tồn' là tên file hay là tên trang tính
(3) Muốn đạt iêu cầu của bạn cần khử hết khoảng trống (đầu & cuối cụm từ) trong các trang tính; Nhưng điều này không dễ đối với mình hay cộng đồng.
Sơ sót này sẽ không diễn ra 1 khi bạn có mã duy nhất cho từng các mặt hàng.
 
Upvote 0
View attachment 253944

Xin nhờ sự giúp đỡ từ diễn đàn ạ !

Em có tạo 1 file dữ liệu chi tiết tồn Đk, nhập TK, xuất TK được tổng hợp trong 1 file excel với các Sheet tương ứng
với việc làm thủ công để ra báo cáo tổng hợp : XUất - Nhập - Tồn trong tháng sẽ không hiệu quả.
Em mong 1 được sự giúp đỡ từ diễn đàn cho 1 đoạn Code cho bài toàn trên ạ

Em xin cảm ơn !
Đang rãnh nên ôn bài xíu. Mấy dạng code này chịu khó học 1 tuần là viết được khỏi nhờ ai cả.
Thậm chí có thể kiểm soát được dữ liệu nhập không nhất quán
 

File đính kèm

  • BAOCAO X-N-T.xlsb
    133 KB · Đọc: 48
Upvote 0
Đang rãnh nên ôn bài xíu. Mấy dạng code này chịu khó học 1 tuần là viết được khỏi nhờ ai cả.
Thậm chí có thể kiểm soát được dữ liệu nhập không nhất quán
Em cảm ơn đáp án của a ạ.

Chi tiết thì tại cột Nhập trong kỳ đang bị chạy nhầm qua cột tồn đầu kỳ ạ.
Anh kiểm tra lại code với ạ .1612423266855.png
 
Upvote 0
Em cảm ơn đáp án của a ạ.

Chi tiết thì tại cột Nhập trong kỳ đang bị chạy nhầm qua cột tồn đầu kỳ ạ.
Anh kiểm tra lại code với ạ .View attachment 253950
Thử lại code này coi sao
Mã:
Sub Bao_Cao_NXT()
Dim Dic As Object, sArr(), i As Long, Res(1 To 10000, 1 To 9), sh As Worksheet
Dim tmp As String, j As Long, k As Long, x As Long, shts(), n As Long
Set Dic = CreateObject("scripting.dictionary")
shts = Array("TON DK", "NHAP TK", "XKHO TK")
For n = LBound(shts) To UBound(shts)
      Set sh = Sheets(shts(n))
      If n = UBound(shts) Then
         sArr = sh.Range("C3", sh.[C65536].End(3)).Resize(, 5).Value
      Else
         sArr = sh.Range("B3", sh.[B65536].End(3)).Resize(, 5).Value
      End If
      For i = 1 To UBound(sArr)
         tmp = sArr(i, 1) & sArr(i, 2) & sArr(i, 3) & sArr(i, 4)
         tmp = Replace(UCase(tmp), " ", "")
         If Not Dic.exists(tmp) Then
            k = k + 1
            Dic.Add tmp, k
            Res(k, 1) = k
            For j = 1 To 4
               Res(k, j + 1) = sArr(i, j)
            Next
            Res(k, n + 6) = sArr(i, 5)
            Res(k, 9) = "=RC[-3]+RC[-2]-RC[-1]"
         Else
            x = Dic.Item(tmp)
            Res(x, n + 6) = Res(x, n + 6) + sArr(i, 5)
         End If
      Next
  
Next
With Sheets("BAOCAO_X-N-T")
   .[A4:F10000].ClearContents
   .[A4].Resize(k, UBound(Res, 2)) = Res
End With
End Sub
Bài đã được tự động gộp:

Đang mối làm ăn bị zựt mất tiêu rồi, /-(u, Hu, hu, . . . . .

Đang mối làm ăn bị zựt mất tiêu rồi, /-(u, Hu, hu, . . . . . .
Hôm nay làm ngày cuối rồi nên em cũng rãnh, vì vậy nên mới tóm cái mối mần ăn của bác Sa. Mong bác thông cảm. Chúc bác năm mới nhiều sức khỏe, sức khỏe và sức khỏe...
 
Lần chỉnh sửa cuối:
Upvote 0
Thử lại code này coi sao
Mã:
Sub Bao_Cao_NXT()
Dim Dic As Object, sArr(), i As Long, Res(1 To 10000, 1 To 9), sh As Worksheet
Dim tmp As String, j As Long, k As Long, x As Long, shts(), n As Long
Set Dic = CreateObject("scripting.dictionary")
shts = Array("TON DK", "NHAP TK", "XKHO TK")
For n = LBound(shts) To UBound(shts)
      Set sh = Sheets(shts(n))
      If n = UBound(shts) Then
         sArr = sh.Range("C3", sh.[C65536].End(3)).Resize(, 5).Value
      Else
         sArr = sh.Range("B3", sh.[B65536].End(3)).Resize(, 5).Value
      End If
      For i = 1 To UBound(sArr)
         tmp = sArr(i, 1) & sArr(i, 2) & sArr(i, 3) & sArr(i, 4)
         tmp = Replace(UCase(tmp), " ", "")
         If Not Dic.exists(tmp) Then
            k = k + 1
            Dic.Add tmp, k
            Res(k, 1) = k
            For j = 1 To 4
               Res(k, j + 1) = sArr(i, j)
            Next
            Res(k, n + 6) = sArr(i, 5)
            Res(k, 9) = "=RC[-3]+RC[-2]-RC[-1]"
         Else
            x = Dic.Item(tmp)
            Res(x, n + 6) = Res(x, n + 6) + sArr(i, 5)
         End If
      Next
 
Next
With Sheets("BAOCAO_X-N-T")
   .[A4:F10000].ClearContents
   .[A4].Resize(k, UBound(Res, 2)) = Res
End With
End Sub
Bài đã được tự động gộp:




Hôm nay làm ngày cuối rồi nên em cũng rãnh, vì vậy nên mới tóm cái mối mần ăn của bác Sa. Mong bác thông cảm. Chúc bác năm mới nhiều sức khỏe, sức khỏe và sức khỏe...
Em cảm ơn nhiều ạ .
Code đúng rồi ạ .
 
Upvote 0
Thử lại code này coi sao
Mã:
Sub Bao_Cao_NXT()
Dim Dic As Object, sArr(), i As Long, Res(1 To 10000, 1 To 9), sh As Worksheet
Dim tmp As String, j As Long, k As Long, x As Long, shts(), n As Long
Set Dic = CreateObject("scripting.dictionary")
shts = Array("TON DK", "NHAP TK", "XKHO TK")
For n = LBound(shts) To UBound(shts)
      Set sh = Sheets(shts(n))
      If n = UBound(shts) Then
         sArr = sh.Range("C3", sh.[C65536].End(3)).Resize(, 5).Value
      Else
         sArr = sh.Range("B3", sh.[B65536].End(3)).Resize(, 5).Value
      End If
      For i = 1 To UBound(sArr)
         tmp = sArr(i, 1) & sArr(i, 2) & sArr(i, 3) & sArr(i, 4)
         tmp = Replace(UCase(tmp), " ", "")
         If Not Dic.exists(tmp) Then
            k = k + 1
            Dic.Add tmp, k
            Res(k, 1) = k
            For j = 1 To 4
               Res(k, j + 1) = sArr(i, j)
            Next
            Res(k, n + 6) = sArr(i, 5)
            Res(k, 9) = "=RC[-3]+RC[-2]-RC[-1]"
         Else
            x = Dic.Item(tmp)
            Res(x, n + 6) = Res(x, n + 6) + sArr(i, 5)
         End If
      Next
 
Next
With Sheets("BAOCAO_X-N-T")
   .[A4:F10000].ClearContents
   .[A4].Resize(k, UBound(Res, 2)) = Res
End With
End Sub
Bài đã được tự động gộp:




Hôm nay làm ngày cuối rồi nên em cũng rãnh, vì vậy nên mới tóm cái mối mần ăn của bác Sa. Mong bác thông cảm. Chúc bác năm mới nhiều sức khỏe, sức khỏe và sức khỏe...
Anh cho em hỏi !
Nếu như ở đây mình thêm điều kiện chọn xem Từ ngày ... đến ngày ... thì mình sẽ sửa lại như thế nào ah?
Mong anh hướng dẫn giúp, em cám ơn nhiều.
 
Upvote 0
Thậm chí có thể kiểm soát được dữ liệu nhập không nhất quán
Cho dù VBA xử lý được các khoảng trắng dư khi nhập đi chăng nữa, chủ bài đăng cũng nên tìm cách trừ khử ngay sai sót trong quá trình nhập liệu
Ví dụ ta có thể nhập theo danh mục thông qua các ComboBox

Chuyện này cũng giống như trong ngành i: Phòng bệnh hơn chữa bệnh.
Chúng ta phòng Covid19 tốt hơn các nước có nền i học tiên tiến hàng đầu TG, nên sự chết chóc mới có 35 lần trong năm!
Con số này có làm lay động chủ bài đăng chăng?
 
Upvote 0
Cho dù VBA xử lý được các khoảng trắng dư khi nhập đi chăng nữa, chủ bài đăng cũng nên tìm cách trừ khử ngay sai sót trong quá trình nhập liệu
Ví dụ ta có thể nhập theo danh mục thông qua các ComboBox

Chuyện này cũng giống như trong ngành i: Phòng bệnh hơn chữa bệnh.
Chúng ta phòng Covid19 tốt hơn các nước có nền i học tiên tiến hàng đầu TG, nên sự chết chóc mới có 35 lần trong năm!
Con số này có làm lay động chủ bài đăng chăng?
Bạn có tin con số công bố "35 lần trong năm" ?
 
Upvote 0
Mình vẫn đang tin là như vậy & chắc còn tin đến hết năm con chuột; Rồi sau đó tính tiếp . . . .!

[Con số này những BS trong BV Đa khoa Đà nẵng đã nắm rõ hơn ai hết. & bạn có dịp ở ĐN trong khi ấy không vậy?]

Còn mình thì đang theo: "Những người chết vì Covid19 tại Viết Nam" - Bing
 
Lần chỉnh sửa cuối:
Upvote 0
Mình vẫn đang tin là như vậy & chắc còn tin đến hết năm con chuột; Rồi sau đó tính tiếp . . . .!

[Con số này những BS trong BV Đa khoa Đà nẵng đã nắm rõ hơn ai hết. & bạn có dịp ở ĐN trong khi ấy không vậy?]

Còn mình thì đang theo: "Những người chết vì Covid19 tại Viết Nam" - Bing
Mình không tin tưởng các con số công bố, đôi khi nói không đúng lại có lợi lớn cho cộng đồng
 
Upvote 0
Cho dù VBA xử lý được các khoảng trắng dư khi nhập đi chăng nữa, chủ bài đăng cũng nên tìm cách trừ khử ngay sai sót trong quá trình nhập liệu
Ví dụ ta có thể nhập theo danh mục thông qua các ComboBox

Chuyện này cũng giống như trong ngành i: Phòng bệnh hơn chữa bệnh.
Chúng ta phòng Covid19 tốt hơn các nước có nền i học tiên tiến hàng đầu TG, nên sự chết chóc mới có 35 lần trong năm!
Con số này có làm lay động chủ bài đăng chăng?
./ Làm việc thống kê tới con số, nhập liệu là chủ yếu. Cũng như bao ngành nghề khác cái tâm, cái kỹ càng là trên hết.
./ Tuy nhiên trong quá trình làm việc, không thể không có những sai sót nhất định, khi dữ liệu này phải làm tay ( nhà máy đang đưa số hóa vào ). Và phải nhập trong nhiều ngày, với sự trùng lặp nhất định. Vì ngành nghề sản xuất
./ Do vậy bản thân người nhân viên khi làm cũng phải có những căn cứ đối chiếu ( số tổng ) Tồng tồn + Tổng nhập - Tổng xuất = Tổng cuối - Sau khi báo cáo chi tiết đã ra với số liệu tổng tương đồng nhau thì kết quả của mình cũng đã chính xác 95-96% rồi :)
./ Bên cạnh đó nhà máy còn có các phòng ban liên quan, sẽ đối chiếu chi tiết cũng như tổng . cho nên VBA sẽ hỗ trợ công việc rất hữu hiệu đặc biết có các code làm cho cái thao tác dò, cộng dữ liệu thủ công sẽ đỡ đi rất nhiều.
Em xin chia sẽ quan điểm cá nhân của bản thân khi làm nghề ạ. Và rất cảm ơn mọi người đã có quan tâm tới bài viết này ạ
 
Upvote 0
Cho dù VBA xử lý được các khoảng trắng dư khi nhập đi chăng nữa, chủ bài đăng cũng nên tìm cách trừ khử ngay sai sót trong quá trình nhập liệu
Ví dụ ta có thể nhập theo danh mục thông qua các ComboBox

Chuyện này cũng giống như trong ngành i: Phòng bệnh hơn chữa bệnh.
Chúng ta phòng Covid19 tốt hơn các nước có nền i học tiên tiến hàng đầu TG, nên sự chết chóc mới có 35 lần trong năm!
Con số này có làm lay động chủ bài đăng chăng?
Từ VBA chuyển sang covid nhanh như chớp mắt @!>>< .

Quay lại nhập liệu, nhiều người vẫn không thấy(hoặc không biết) lợi ích của việc lập 1 danh mục để khi nhập liệu chỉ cần gõ mã số thôi. Để hiện cái tên thì chuyện đơn giản là chỉ cần Vlookup là xong.
 
Upvote 0
.(1)/ Làm việc thống kê tới con số, nhập liệu là chủ yếu. Cũng như bao ngành nghề khác cái tâm, cái kỹ càng là trên hết.
.(1)/ Tuy nhiên trong quá trình làm việc, không thể không có những sai sót nhất định, khi dữ liệu này phải làm tay ( nhà máy đang đưa số hóa vào ). Và phải nhập trong nhiều ngày, với sự trùng lặp nhất định. Vì ngành nghề sản xuất
.(2)/ Do vậy bản thân người nhân viên khi làm cũng phải có những căn cứ đối chiếu ( số tổng ) Tồng tồn + Tổng nhập - Tổng xuất = Tổng cuối - Sau khi báo cáo chi tiết đã ra với số liệu tổng tương đồng nhau thì kết quả của mình cũng đã chính xác 95-96% rồi :)
(3)./ Bên cạnh đó nhà máy còn có các phòng ban liên quan, sẽ đối chiếu chi tiết cũng như tổng . cho nên VBA sẽ hỗ trợ công việc rất hữu hiệu đặc biết có các code làm cho cái thao tác dò, cộng dữ liệu thủ công sẽ đỡ đi rất nhiều.
Em xin chia sẽ quan điểm cá nhân của bản thân khi làm nghề ạ. Và rất cảm ơn mọi người đã có quan tâm tới bài viết này ạ
(1) Bạn chưa biết hay biết rồi (nhập liệu thông qua danh sách chọn trong 1 ComboBox) mà ngụy biện?
(2) Làm việc quản lý cônghệ thống kê số liệu mà 95 - 96% chính xác đã là thỏa mãn thì sẽ không khá lên được; Ông bà mình xưa nói về chuyện này: Sai con toán bán con sữu đó bạn!
(3) Chuyện đối chiếu là chuyện chẳng đặng đừng, nhưng dựa vô đó để mà sai sót tại khâu nào trước đó là 'tội ác' & chí ít là làm ăn không đàng hoàng.
CQ nào duy trì ba cái chuyện này sớm muộn cũng đi tong thôi!

Chúc xuân mọi người vui vẻ!
 
Upvote 0
(1) Bạn chưa biết hay biết rồi (nhập liệu thông qua danh sách chọn trong 1 ComboBox) mà ngụy biện?
(2) Làm việc quản lý cônghệ thống kê số liệu mà 95 - 96% chính xác đã là thỏa mãn thì sẽ không khá lên được; Ông bà mình xưa nói về chuyện này: Sai con toán bán con sữu đó bạn!
(3) Chuyện đối chiếu là chuyện chẳng đặng đừng, nhưng dựa vô đó để mà sai sót tại khâu nào trước đó là 'tội ác' & chí ít là làm ăn không đàng hoàng.
CQ nào duy trì ba cái chuyện này sớm muộn cũng đi tong thôi!

Chúc xuân mọi người vui vẻ!
:(Nhận định của anh @SA_DQ gay gắt với em và DN của em quá ạ .
Dù sao cũng rất cảm ơn sự góp ý từ anh và m.n ạ .
Em cảm ơn !
 
Upvote 0
Web KT

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

Back
Top Bottom