Xử lý dữ liệu đã nhập (1 người xem)

Liên hệ QC

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

ngoyeubebu

Thành viên chính thức
Tham gia
7/6/13
Bài viết
89
Được thích
5
Mình có 1 Sheet HĐ2013 là toàn bộ hóa đơn mua bán trong năm.
Mình muốn lọc dữ liệu và tính tổng theo Tổng số lượng, Tổng tiền của các mặt hàng hay Tổng theo khách hàng.....hay Tổng tiền theo tháng chẳng hạng thì mình phải làm thế nào vậy.
Mong mọi người giúp đỡ.
 
Lần chỉnh sửa cuối:
Cả 1 rừng file, biết cái nào đây trời?!

\\////////\\\\\\\\\\\\\\\//////////,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 
Upvote 0
Có File nào đâu mà xem
 
Upvote 0
Trong ngữ cảnh Excel, từ "tổng theo..." dịch ra là "pivot"

Hễ muốn làm "tổng theo" thì cứ việc nghĩ đến "pivot table". Đã thử dùng pivot table chưa? Cho biết lý do tại sao không dùng được.
 
Upvote 0
Trong ngữ cảnh Excel, từ "tổng theo..." dịch ra là "pivot"

Hễ muốn làm "tổng theo" thì cứ việc nghĩ đến "pivot table". Đã thử dùng pivot table chưa? Cho biết lý do tại sao không dùng được.
Bạn ơi nhưng khi trong 1 hóa đơn mình lưu thì dòng tổng hay dòng thanh toán ... của mình lặp đi lặp tại trong mỗi dòng sản phẩm trên hóa đơn. Vậy dùng pivot table ko đc
Có cách nào nếu số hóa đơn trùng nhau thì chỉ lấy giá trị của 1 dòng các chỉ tiêu như Tổng hay Thanh toán hay Nợ...... để tính tổng không ạ
 
Upvote 0
Mình nhờ macro tính theo hàm CSDL

File đây thưa mọi người . Sorry mọi người

Mã hàng của bạn không dùng trong excel được; Vấn đề này bạn tự nghiên cứu tiếp; Mã mình đã chỉnh lại 1 số, số chưa chỉnh còn lại sẽ nhường lại bạn!

Bạn xem & kiểm theo file!
 

File đính kèm

Upvote 0
Trong ngữ cảnh Excel, từ "chỉ lấy..." dịch ra là "filter"

Nếu pivot table không
filtered được thì lỗi tại dữ liệu xếp không chuẩn. Chuẩn hoá nó đi rồi làm việc tiếp.
 
Upvote 0
Mã hàng của bạn không dùng trong excel được; Vấn đề này bạn tự nghiên cứu tiếp; Mã mình đã chỉnh lại 1 số, số chưa chỉnh còn lại sẽ nhường lại bạn!

Bạn xem & kiểm theo file!

Bạn ơi sao vài mã hàng lại phải thê " _ " hả bạn . mã hàng có bị trùng đâu nhỉ . bạn giải thích cho mình với.
Mới lại thống kê sảng lượng như vậy thì chỉ là tổng sản lượng chung thôi. nếu muốn tính theo tháng thì mình làm thế nào.
Hay mình filter ở Sheet HD2013 rồi RUN lại ở Sheet SLuong hả bạn.

Mình còn gà lắm không hiểu được được hết các CODE , bạn có thể giải thích cho mình được không hihi.

Sub TongTheoMaHang()
Dim Cls As Range

Sheets("SLuong").Select
Set Sh = ThisWorkbook.Worksheets("HD2013")
Set Rng = Sh.[d1].CurrentRegion
Set WF = Application.WorksheetFunction
Range("D6:E" & [B6].End(xlDown).Row).Clear
Application.ScreenUpdating = False
For Each Cls In Range([B6], [B6].End(xlDown))
Sh.[ac2].Value = Cls.Value
Cls.Offset(, 2).Value = WF.DSum(Rng, Sh.[i1], Sh.[ac1:ac2])
Cls.Offset(, 3).Value = WF.DSum(Rng, Sh.[J1], Sh.[ac1:ac2])
Next Cls
Application.ScreenUpdating = True: Randomize
[B5].Resize(, 4).Interior.ColorIndex = 34 + 9 * Rnd() \ 1
Set Sh = Nothing: Set Rng = Nothing
Set WF = Nothing
End Sub

À cho mình hỏi thêm làm thế nào bạn tính hóa đơn mà các chỉ tiêu Tổng tiền trên các dòng trong 1 hóa đơn là như nhau,
Đừng trách mình hỏi nhiều nhá hihi
Thank bạn rất nhiều. :D
 
Upvote 0
Trong ngữ cảnh Excel, từ "chỉ lấy..." dịch ra là "filter"

Nếu pivot table không
filtered được thì lỗi tại dữ liệu xếp không chuẩn. Chuẩn hoá nó đi rồi làm việc tiếp.

Bạn gợi ý cho mình Chuẩn hóa nó đi, tại mình không biết làm thế nào dùng pivot khi mà các chỉ tiêu Tổng tiền và Nợ trên các dòng của 1 hóa đơn là như nhau.
Thanks bạn rất nhiều
 
Upvote 0
[ThongBao](1) Bạn ơi sao vài mã hàng lại phải thê " _ " hả bạn . mã hàng có bị trùng đâu nhỉ . bạn giải thích cho mình với.

(2) Mới lại thống kê sảng lượng như vậy thì chỉ là tổng sản lượng chung thôi. nếu muốn tính theo tháng thì mình làm thế nào.
Hay mình filter ở Sheet HD2013 rồi RUN lại ở Sheet SLuong hả bạn.
[/thongbao]

(1) Việc này liên quan đến ký tự đại diện "*", "?" trong êxcel; Những mã cần thêm thì đã thêm;
Vắn tắc thế này
Mã mặt hàng hay mã khách hàng sau, có fần đầu không thể trùng với 1 mã nào có trước nó;
Ví dụ (theo mã ở cột 'Y' & cột 'AA' của trang tính 'HD2013'):
Trước đó đã có mã MDLO, thì ta không thể fát sinh các mã MDLOD hay MDLOX được; Vì rằng khi lọc hay tình bằng các hàm DSUM(), số liệu của 2 mã sau sẽ gôm vô khi ta tính số liệu của MDLO
Lúc này, muốn giữ các mã sau, buộc lòng ta cần thêm "_' vô mã MDLO ban đầu

Với mình thì nguyên tắc fải là: Các mã luôn có độ dài như nhau!

(2) Từ từ rồi cháo sẽ nhừ!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
[ThongBao](1) Bạn ơi sao vài mã hàng lại phải thê " _ " hả bạn . mã hàng có bị trùng đâu nhỉ . bạn giải thích cho mình với.

(2) Mới lại thống kê sảng lượng như vậy thì chỉ là tổng sản lượng chung thôi. nếu muốn tính theo tháng thì mình làm thế nào.
Hay mình filter ở Sheet HD2013 rồi RUN lại ở Sheet SLuong hả bạn.
[/ThongBao]

(1) Việc này liên quan đến ký tự đại diện "*", "?" trong êxcel; Những mã cần thêm thì đã thêm;
Vắn tắc thế này
Mã mặt hàng hay mã khách hàng sau, có fần đầu không thể trùng với 1 mã nào có trước nó;
Ví dụ (theo mã ở cột 'Y' & cột 'AA' của trang tính 'HD2013'):
Trước đó đã có mã MDLO, thì ta không thể fát sinh các mã MDLOD hay MDLOX được; Vì rằng khi lọc hay tình bằng các hàm DSUM(), số liệu của 2 mã sau sẽ gôm vô khi ta tính số liệu của MDLO
Lúc này, muốn giữ các mã sau, buộc lòng ta cần thêm "_' vô mã MDLO ban đầu

Với mình thì nguyên tắc fải là: Các mã luôn có độ dài như nhau!

(2) Từ từ rồi cháo sẽ nhừ!

File bạn mới đăng vẫn giống file trước mà bạn. Bạn giải thích hộ mình câu hỏi thứ 2 bên trên nữa nha
Thanks bạn rất nhiều
 
Upvote 0
(1) File bạn mới đăng vẫn giống file trước mà bạn.

(2) Bạn giải thích hộ mình câu hỏi thứ 2 bên trên nữa nha
Thanks bạn rất nhiều

Giống là giống thế nào;
File cuối có tính đến sản lượng của từng khách hàng mà bạn iêu cầu từ đầu mà!

Bằng chứng đây thôi:
Mình muốn lọc dữ liệu và tính tổng theo Tổng số lượng, Tổng tiền của các mặt hàng hay Tổng theo khách hàng....
Bạn đừng có nói với tôi rằng bạn chưa hề fát ngôn câu này đó nha!

Lí ra mình không gởi tiếp file ngay bài này,nhưng thôi, cho qua . . . . & mới bạn xem file
 
Lần chỉnh sửa cuối:
Upvote 0
Giống là giống thế nào;
File cuối có tính đến sản lượng của từng khách hàng mà bạn iêu cầu từ đầu mà!

Bằng chứng đây thôi:

Bạn đừng có nói với tôi rằng bạn chưa hề fát ngôn câu này đó nha!

Lí ra mình không gởi tiếp file ngay bài này,nhưng thôi, cho qua . . . . & mới bạn xem file
File trươc bạn đăng ko có tổng hợp theo tháng mà bạn. :D
Thanks bạn rất nhiều
Bạn cho mình hỏi thêm làm thế nào để tính xem tổng số lượng tiền theo khách hàng hay theo mặt hàng trong từng tháng không. Vì tổng tiền theo khách hàng hay theo mặt hàng là tổng chung cho tất cả các tháng , mà điều thực sự mình muốn chỉ là từng tháng thôi. sorry vì mình hỏi nhiều nha :D :D
 
Upvote 0
File trươc bạn đăng ko có tổng hợp theo tháng mà bạn. :D
Thanks bạn rất nhiều
Bạn cho mình hỏi thêm làm thế nào để tính xem tổng số lượng tiền theo khách hàng hay theo mặt hàng trong từng tháng không. Vì tổng tiền theo khách hàng hay theo mặt hàng là tổng chung cho tất cả các tháng , mà điều thực sự mình muốn chỉ là từng tháng thôi. sorry vì mình hỏi nhiều nha :D :D
Bạn thêm 1 sheet mới, trong sheet mới đó tạo 1 bảng kết quả mong muốn của bạn vào rồi gửi lên nhé.
 
Upvote 0

Cảm ơn bạn rất nhiều. }}}}}}}}}}
Bạn ơi có cách nào khi mình nhấn " Hôn Em 1 Cai" nó hiện lên các tháng với năm cho mình lựa chọn rồi mới tính tổng ra như vây không . Vì mình sợ khi số lượng hóa đơn của mình lớn thì việc tính tổng như vậy sẽ rất chậm vì luôn phải tính lại toàn bộ số liệu.
Sorry vì hỏi quá nhiều......-\\/.
 
Lần chỉnh sửa cuối:
Upvote 0
Ban xem ở mtrang tính mới fát sinh.

}}}}} }}}}}
)*&^) )*&^) )*&^)
--=0 --=0
 

File đính kèm

Upvote 0
Bạn ơi giải thích hộ mình đoạn CODE này với. tại sao lại có mấy chỗ như "Nam = Year([AD1].Value)" sao lại là AD1 mình không hiểu . đừng trách mình hỏi dễ quá nha tại mình toàn mò mẫm học nên căn bản cũng không biết hihi
Nếu được xin giải thích cho mình cả đoạn CODE bên dưới nhé
Thanks bạn trước

Sub BCTháng()
Dim J As Byte, Ww As Byte, Nam As Long
Dim cRit As Range

Sheets("SLuong").Select: Nam = Year([AD1].Value)
Set Sh = ThisWorkbook.Worksheets("HD2013")
Set Rng = Sh.[d1].CurrentRegion
Set WF = Application.WorksheetFunction
[AC6].Resize(13, 4).ClearContents
Set cRit = Sh.[Ah1:Ai2]
For J = Month([AD1].Value) To Month([AD2].Value)
Ww = Ww + 1
[Ac5].Offset(Ww).Value = "Tháng" & Str(J) & "/" & CStr(Nam)
Sh.[Ah4].Value = DateSerial(Nam, J, 1)
Sh.[Ai4].Value = DateSerial(Nam, J + 1, 0)
[AE5].Offset(Ww).Value = WF.DSum(Rng, Sh.[j1], cRit)
[AD5].Offset(Ww).Value = WF.DSum(Rng, Sh.[I1], cRit)
Next J
Set Sh = Nothing: Set WF = Nothing
Set Rng = Nothing: Randomize
[AB5].Resize(, 4).Interior.ColorIndex = 34 + 9 * Rnd() \ 1
End Sub
 
Upvote 0
???

Bạn ơi sao mình sửa lại đoạn code như trong file dưới nó lại ra kết quả sai vậy bạn.

Sửa từ file của bài nào?

Code cũ ra sao, sửa dòng nào?

Có sửa thiết kế trang tính hay chưa?

Kết quả của dòng nào sai? Đầu hay cuối hay tất cả các tháng; Lí ra fải là bao nhiêu mới đúng.
 
Upvote 0
Sửa từ file của bài nào?

Code cũ ra sao, sửa dòng nào?

Có sửa thiết kế trang tính hay chưa?

Kết quả của dòng nào sai? Đầu hay cuối hay tất cả các tháng; Lí ra fải là bao nhiêu mới đúng.

Mình sửa đoạn CODE trong sheet SLuong ở file bên dưới , CODE màu đỏ bên dưới là file gốc còn file màu xanh là mình sửa lại.
Kết quả không giống với kết quả của bạn , ngoài tháng 5 là đúng còn các tháng khác thì sai.

Sub BCTháng()
Dim J As Byte, Ww As Byte, Nam As Long
Dim cRit As Range

Sheets("SLuong").Select: Nam = Year([AD1].Value)
Set Sh = ThisWorkbook.Worksheets("HD2013")
Set Rng = Sh.[d1].CurrentRegion
Set WF = Application.WorksheetFunction
[AC6].Resize(13, 4).ClearContents
Set cRit = Sh.[Ah1:Ai2]
For J = Month([AD1].Value) To Month([AD2].Value)
Ww = Ww + 1
[Ac5].Offset(Ww).Value = "Tháng" & Str(J) & "/" & CStr(Nam)
Sh.[Ah4].Value = DateSerial(Nam, J, 1)
Sh.[Ai4].Value = DateSerial(Nam, J + 1, 0)
[AE5].Offset(Ww).Value = WF.DSum(Rng, Sh.[j1], cRit)
[AD5].Offset(Ww).Value = WF.DSum(Rng, Sh.[I1], cRit)
Next J
Set Sh = Nothing: Set WF = Nothing
Set Rng = Nothing: Randomize
[AB5].Resize(, 4).Interior.ColorIndex = 34 + 9 * Rnd() \ 1
End Sub

Sub BC()
Dim J As Byte, Ww As Byte, Nam As Long
Dim cRit As Range
Sheets("SLuong").Select: Nam = Year([D1].Value)
Set Sh = ThisWorkbook.Worksheets("HD2013")
Set Rng = Sh.[D1].CurrentRegion
Set WF = Application.WorksheetFunction
[C5].Resize(13, 4).ClearContents
Set cRit = Sh.[Ah1:Ai2]
For J = Month([D1].Value) To Month([D2].Value)
Ww = Ww + 1
[C4].Offset(Ww).Value = "Tháng" & Str(J) & "/" & CStr(Nam)
Sh.[Ah4].Value = DateSerial(Nam, J, 1)
Sh.[Ai4].Value = DateSerial(Nam, J + 1, 0)
[D4].Offset(Ww).Value = WF.DSum(Rng, Sh.[I1], cRit)
[E4].Offset(Ww).Value = WF.DSum(Rng, Sh.[J1], cRit)
Next J
Set Sh = Nothing: Set WF = Nothing
Set Rng = Nothing: Randomize
[B4].Resize(, 4).Interior.ColorIndex = 34 + 9 * Rnd() \ 1
End Sub

Mình không hiểu sao lại sai nữa.
 

File đính kèm

Upvote 0
[thongbao]Mình không hiểu sao lại sai nữa.[/thongbao]

Còn mình thì lờ mờ hiểu rằng tại [D2] bạn chưa có hàm =MAX('HD2013'!B:B)
Nó cho 1 hàng đúng kết quả là may lắm rồi; Như mình thì đuổi bạn ra khỏi chương trình luôn!

Khà, khà, . . . . vui thôi

Chúc bạn, mình & mọi người ngày làm việc tốt lành!
 
Upvote 0
[thongbao]Mình không hiểu sao lại sai nữa.[/thongbao]

Còn mình thì lờ mờ hiểu rằng tại [D2] bạn chưa có hàm =MAX('HD2013'!B:B)
Nó cho 1 hàng đúng kết quả là may lắm rồi; Như mình thì đuổi bạn ra khỏi chương trình luôn!

Khà, khà, . . . . vui thôi

Chúc bạn, mình & mọi người ngày làm việc tốt lành!

Mình có hàm Max mà. Bạn xem lại giúp mình với :D
 
Upvote 0
[thongbao]Tốn thời gian & tài nguyên với bạn quá đi mất![/thongbao]
\\\\\\\\\\\\\\\\\\\/////////////////\\\\\\\\\\\\\\//////////////,,,,,,,,,,,,,,,,,,,
 

File đính kèm

Upvote 0

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

Back
Top Bottom