Cộng dồn số lượng theo điều kiện

Liên hệ QC

vanquangdy

Thành viên chính thức
Tham gia
29/10/08
Bài viết
65
Được thích
4
chào cả nhà! Mình đang có một vấn đề rất cần cho công việc hiện tại đó là mìng có file gồm 2 sh (TongHop; ChiTiet). Sếp yêu cầu hàng tháng, quý, năm phải báo cáo số lượng từng dịch vụ phát sinh trong tháng, quý, năm đó. Nhưng mình chỉ làm được biểu mẫu gõ các nội dung vào rồi in ra giấy, chứ không lưu số lượng lại được. Vì vậy mình nhờ các cao thủ chỉ dùm cách nào cộng dồn số lượng của mỗi lần phát sinh vào sh TongHop (có file đính kèm). Cụ thể khi nhập số liệu vào sh ChiTiet thì sh TongHop sẽ dò tìm nội dung tương ứng để điền số lượng vào và giữ nguyên số lượng đó mặc dù bên ChiTiet cột số lượng đã bị xóa(B), và tiếp tục cộng dồn số lượng mới nhập vào cột B của Sh ChiTiet với số lượng có sẳn của sh Tong hop cột tương ứng. Mình đang rất cần mong các AC hướng dẫn dùm (bằng VBA càng tốt). Cám ơn nhiều
 

File đính kèm

Bạn thử cái này coi sao, cũng chưa biết đúng ý hay không
 

File đính kèm

Upvote 0
cảm ơn anh quanghai nhiều, cho em hỏi thêm chút, ý là tại sh chi tiết khi phát sinh nó sẽ không đủ các nội dung như bên TongHop đâu, chỉ có làm dịch vụ nào thì nhập tên dịch vụ đó thôi , chứ không liệt kê ra hết như sh TongHop. Nên khi thực hiện xong nó phải tìm tên dịch vụ tương ứng bên TongHop để điền vào, anh xem giúp dùm em với
 
Upvote 0
File đó đúng với yêu cầu của bạn mà. Bạn thử rồi so sanh kết quả trước và sau khi cập nhât xem
 
Upvote 0
chào cả nhà! Mình đang có một vấn đề rất cần cho công việc hiện tại đó là mìng có file gồm 2 sh (TongHop; ChiTiet). Sếp yêu cầu hàng tháng, quý, năm phải báo cáo số lượng từng dịch vụ phát sinh trong tháng, quý, năm đó. Nhưng mình chỉ làm được biểu mẫu gõ các nội dung vào rồi in ra giấy, chứ không lưu số lượng lại được. Vì vậy mình nhờ các cao thủ chỉ dùm cách nào cộng dồn số lượng của mỗi lần phát sinh vào sh TongHop (có file đính kèm). Cụ thể khi nhập số liệu vào sh ChiTiet thì sh TongHop sẽ dò tìm nội dung tương ứng để điền số lượng vào và giữ nguyên số lượng đó mặc dù bên ChiTiet cột số lượng đã bị xóa(B), và tiếp tục cộng dồn số lượng mới nhập vào cột B của Sh ChiTiet với số lượng có sẳn của sh Tong hop cột tương ứng. Mình đang rất cần mong các AC hướng dẫn dùm (bằng VBA càng tốt). Cám ơn nhiều
Đói bụng quá, góp với bạn một cách làm cho đỡ đói ......rồi....đi ăn cơm
Híc:;;;:::
 

File đính kèm

Upvote 0
Đói bụng quá, góp với bạn một cách làm cho đỡ đói ......rồi....đi ăn cơm
Híc:;;;:::

Cách dùng dictionary của anh rất pro, nhưng sao dữ liêu nhiều không chay được.
Mình dự định so sánh tốc đô với code này nhưng thấy bị báo lỗi

Sub Congdon()
Dim n, r, kq, th
Application.ScreenUpdating = 0
Set th = Sheets("Tong Hop")
n = [a65536].End(3).Row
For r = 2 To n
Set kq = th.Range(th.[b2], th.[b65536].End(3)).Find(Cells(r, 2))
If Not kq Is Nothing Then kq.Offset(, 1) = kq.Offset(, 1) + Cells(r, 2)
Next
Application.ScreenUpdating = 1
End Sub
 
Upvote 0
Cám ơn anh Quanghai và concogia đã tận tình giúp đỡ, cho mình hỏi thêm là khi cộng dồn muốn tách dữ liệu quản lý theo tháng, quý để biết tháng đó đã sử dụng hết bao nhiêu (ví dụ như Huyết học, Điện giải đồ ...) thì phải làm như thế nào. Mong các anh giúp đỡ dùm
 
Upvote 0
Em đã thử áp dụng cách làm của anh quanghai vào nhưng sao nó chạy cứ báo lỗi hoài, em gửi file lên diễn đàn nhờ các AC giúp dùm cho. Em muốn sao khi thực hiện xong nhấn CongDon thì số lượng bên sh Mau sẽ cộng dồn sang cột số lượng bên sh TongHop, và tên các dịch vụ bên sh MAU (Bảng kê chi phí) nó sẽ kgông theo thứ tự và đầy đủ như bên sh TongHop, tùy trường hợp của mỗi người bệnh. Mong các AC giúp dùm , cám ơn nhiều lắm
 

File đính kèm

Upvote 0
Ban xem file này thử coi được không, code của bạn kỳ quá nên không chạy được
 

File đính kèm

Upvote 0
Bạn xem thêm file này, file này cộng dồn từ MAU sang tonghop
Private Sub CommandButton1_Click()
Dim n, r, kq
Dim th As Worksheet, mau As Worksheet
Application.ScreenUpdating = 0
Set th = Sheets("TongHop")
Set mau = Sheets("mau")
For r = 11 To 81
Set kq = th.Range(th.[b10], th.[b65536].End(3)).Find(mau.Cells(r, 1), , , xlWhole)
If Not kq Is Nothing Then kq.Offset(, 1) = kq.Offset(, 1) + mau.Cells(r, 3)
Next
mau.[c11:c81].ClearContents
Application.ScreenUpdating = 1
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
cảm ơn anh Quanghai nhiều lắm, anh có thể giải thích code rõ hơn để được không em có dịp học hỏi thêm
 
Upvote 0
anh QuangHai ơi , em áp dụng hướng dẫn của anh vào công việc rất tốt. nhưng em chưa hiểu hết nội dung của Code, anh có thể giải thích kỹ để e học hỏi thêm được không. Thank anh
 
Upvote 0
Hic, cũng muốn giải thích cho bạn hiểu nhưng không biết nói thế nào
Bạn không hiểu chỗ nào trong các dòng lệnh vậy? Bạn có thể dùng MSGBOX để tự kiểm tra

Private Sub CommandButton1_Click()
Dim n, r, kq
Dim th As Worksheet, mau As Worksheet
Application.ScreenUpdating = 0
Set th = Sheets("TongHop")
Set mau = Sheets("mau")
For r = 11 To 81
Set kq = th.Range(th.[b10], th.[b65536].End(3)).Find(mau.Cells(r, 1), , , xlWhole)
If Not kq Is Nothing Then kq.Offset(, 1) = kq.Offset(, 1) + mau.Cells(r, 3)
Next
mau.[c11:c81].ClearContents
Application.ScreenUpdating = 1
End Sub
 
Upvote 0
Bạn không hiểu chỗ nào trong các dòng lệnh vậy? Bạn có thể dùng MSGBOX để tự kiểm tra

Hic, cũng muốn giải thích cho bạn hiểu nhưng không biết nói thế nào
PHP:
Private Sub CommandButton1_Click()
1 Dim n, r, kq
  Dim th As Worksheet, mau As Worksheet

3 Application.ScreenUpdating = 0
  Set th = Sheets("TongHop")
5 Set mau = Sheets("mau")
 For r = 11 To 81
7     Set kq = th.Range(th.[b10], th.[b65536].End(3)).Find(mau.Cells(r, 1), , , xlWhole)
      If Not kq Is Nothing Then kq.Offset(, 1) = kq.Offset(, 1) + mau.Cells(r, 3)
9 Next
  mau.[c11:c81].ClearContents
11 Application.ScreenUpdating = 1
End Sub

D1 & D2: Khai báo các biến cần xài;
D3: Bắt màn hình đừng cập nhật
D4: Lấy trang 'TongHop' gán vô biến TH đã khai báo;
D5: Tương tự D4, nhưng tên khác;
D6: Thiết lập vòng lặp với biến r chạy từ 11 đến 81 (Muốn biết r là cái thá gì thì fải xem trong trang tính 'mau')
D7: Áp dụng fương thức tìm kiếm trong vùng cột 'B' của trang 'TH', từ [B10] cho đến hàng cuối có dữ liệu; Giá trị cần tìm nằm ở cột 'A' & dòng biến thiên theo biến r (của vòng lặp) tại trang 'mau'
D8: Nếu tìm thấy ô thỏa, thì ô liền kề bên fải của ô tìm thấy này được cộng thêm trị chứa trong ô cùng dòng tại cột 'C' của ô mà vòng lặp đang khảo sát (mau.Cells(r,3)
D9: Kết thúc vòng lặp;
D10: Xoá dữ liệu trong vùng từ C11:C81 của trang 'mau'
D11: Cho fép cập nhật màn hình;

DC: Chúc vui & thành công
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT

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

Back
Top Bottom