Giúp code cộng dồn SL của 3 vùng (1 người xem)

Liên hệ QC

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

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào tất cả thành viên GPE ! Chức mừng năm mới 2018
Mình đang dùng hàm SUMIF cho việc Cộng dồn SL, do tên hàng quá nhiều dùng hàm thì nặng. Mong mọi người dùng code để xử lý . Xin chân thành cảm ơn !
 

File đính kèm

Bác ơi. tại em viết ứng dụng cần dùng code đề xử lý nhửng vấn đề khác nửa

Muốn viết ứng dụng thì tự viết đi. Chỗ nào sai thì đem lên đây nhờ chỉnh sửa.

Kiểu làm của bạn hiện tại là bạn thiết kế ứng dụng và nhờ người ta code giùm. Vì bạn nắm thiết kế cả hệ thống cho nên phần mềm thuộc về bạn, công sức viết từng mô đun là của anh chị em diễn đàn. Theo định nghĩa của tôi thì đây là lợi dụng chứ không phải nhờ vả.
 
Upvote 0
Muốn viết ứng dụng thì tự viết đi. Chỗ nào sai thì đem lên đây nhờ chỉnh sửa.

Kiểu làm của bạn hiện tại là bạn thiết kế ứng dụng và nhờ người ta code giùm. Vì bạn nắm thiết kế cả hệ thống cho nên phần mềm thuộc về bạn, công sức viết từng mô đun là của anh chị em diễn đàn. Theo định nghĩa của tôi thì đây là lợi dụng chứ không phải nhờ vả.

Đấy chỉ là định nghĩa của anh thôi. Người lập thớt không cần biết và không quan tâm.
Sau khi thớt này được ai đó viết dùm đoạn code dán vào file, thớt sẽ lại đi chỗ khác nói với tất cả rằng : em viết ứng dụng.
 
Upvote 0
Đấy chỉ là định nghĩa của anh thôi. Người lập thớt không cần biết và không quan tâm.
Sau khi thớt này được ai đó viết dùm đoạn code dán vào file, thớt sẽ lại đi chỗ khác nói với tất cả rằng : em viết ứng dụng.

Bạn nghĩ rằng câu ấy tôi nói với thớt?
 
Upvote 0
Chào tất cả thành viên GPE ! Chức mừng năm mới 2018
Mình đang dùng hàm SUMIF cho việc Cộng dồn SL, do tên hàng quá nhiều dùng hàm thì nặng. Mong mọi người dùng code để xử lý . Xin chân thành cảm ơn !
Bạn dùng code sau nhé:
Mã:
Sub Tong_HLMT()
    Dim cn As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended properties=""Excel 8.0;HDR=No"""
    Sheet1.[N5].CopyFromRecordset (cn.Execute("select F1,Sum(F2) from (Select F1,F2 from [sheet1$B5:C] union all select F1, F3 from [sheet1$E5:G] union all select F1,F4 from [sheet1$I5:L]) where F1 is not null group by F1"))
End Sub
 
Upvote 0
Bạn dùng code sau nhé:
Mã:
Sub Tong_HLMT()
    Dim cn As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended properties=""Excel 8.0;HDR=No"""
    Sheet1.[N5].CopyFromRecordset (cn.Execute("select F1,Sum(F2) from (Select F1,F2 from [sheet1$B5:C] union all select F1, F3 from [sheet1$E5:G] union all select F1,F4 from [sheet1$I5:L]) where F1 is not null group by F1"))
End Sub
COde bác quá tuyệt vời. Nhưng đọc em không hiểu gì hết. bác có thể sữa lại code cho dễ dễ xíu được không. ý e là dể dàng thay đổi đầu vào đầu ra của dữ liệu . Em cảm ơn Bác
 
Upvote 0
Muốn viết ứng dụng thì tự viết đi. Chỗ nào sai thì đem lên đây nhờ chỉnh sửa.

Kiểu làm của bạn hiện tại là bạn thiết kế ứng dụng và nhờ người ta code giùm. Vì bạn nắm thiết kế cả hệ thống cho nên phần mềm thuộc về bạn, công sức viết từng mô đun là của anh chị em diễn đàn. Theo định nghĩa của tôi thì đây là lợi dụng chứ không phải nhờ vả.
Ủa thì em cũng tự viết mà dùng hàm SUmif nó nặng. thì không biết thì mới lên đâu hỏi chứ em biết rồi em lên đây hỏi làm gì. Còn Riêng bác em không cần bác giúp. Từ này về sau em cần sự giúp đở của Bác. Bác giỏi nhưng phải có Tâm giúp người khác thì mới Bền được. Chứ Bác Hơn thua ganh ghét người ta làm gì. Khi ta không biết người ta mới hỏi ai giúp được thì giúp thì tôi xin chân thành cảm ơn, còn ai không giúp thì cũng chẳng sao cả. Còn Bác không giúp mà Bác còn nói chuyện làm cho người ta không Vui. Còn tôi viết ứng dụng cho công việc của tôi, Tôi thích VBA nên nghiên cứu. Và tất nhiên không biết ta sẻ hỏi. Và từ nay tôi hỏi tôi không cần sự trợ giúp của BÁc. Chào BÁc
 
Upvote 0
Ủa bây giờ nói qua chuyện thích và ghét, hết nói chuyện công đức rồi hở?
 
Upvote 0
Chào tất cả thành viên GPE ! Chức mừng năm mới 2018
Mình đang dùng hàm SUMIF cho việc Cộng dồn SL, do tên hàng quá nhiều dùng hàm thì nặng. Mong mọi người dùng code để xử lý . Xin chân thành cảm ơn !
Làm việc với dữ liệu việc đầu tiên là phải chú ý để định dạng chuẩn.
Tại sao không cho dữ liệu vào một vùng mà phải là 3 vùng?
Các vùng dữ liệu phải thống nhất số cột, nếu không có dữ liệu thì có thể bỏ trống hoặc ẩn đi.
Nguyên tắc của dữ liệu luôn phải có ngày tháng, số thứ tự. Đủ các thông tin thì sau đó muốn làm gì cũng dễ như trở bàn tay

Vài lời chia sẻ cách làm việc với Excel
 
Upvote 0
Làm việc với dữ liệu việc đầu tiên là phải chú ý để định dạng chuẩn.
Tại sao không cho dữ liệu vào một vùng mà phải là 3 vùng?
Các vùng dữ liệu phải thống nhất số cột, nếu không có dữ liệu thì có thể bỏ trống hoặc ẩn đi.
Nguyên tắc của dữ liệu luôn phải có ngày tháng, số thứ tự. Đủ các thông tin thì sau đó muốn làm gì cũng dễ như trở bàn tay

Vài lời chia sẻ cách làm việc với Excel

Bạn đọc ở bài #5 sẽ thấy tôi có giải thích rằng thớt luôn tự tin với thiết kế của mình, và chỉ cần viết code giùm thôi.
Mọi ý kiến khác, kể cả chỉnh sửa dữ liệu đều không phải là giúp đỡ. Thớt này hỏi nhiều bài rồi, và chỉ cần code chứ không cần gì khác. Một khi có được code giải quyết như trên (bài #8) thì không có lý do gì để thớt phải suy nghĩ thêm cả.
 
Upvote 0
COde bác quá tuyệt vời. Nhưng đọc em không hiểu gì hết. bác có thể sữa lại code cho dễ dễ xíu được không. ý e là dể dàng thay đổi đầu vào đầu ra của dữ liệu . Em cảm ơn Bác
Chỉ là Union Query thôi bạn. Nếu muốn hiểu thì bạn có thể tham khảo về các câu lệnh truy vấn trong Access nhé.
 
Upvote 0
Làm việc với dữ liệu việc đầu tiên là phải chú ý để định dạng chuẩn.
Tại sao không cho dữ liệu vào một vùng mà phải là 3 vùng?
Các vùng dữ liệu phải thống nhất số cột, nếu không có dữ liệu thì có thể bỏ trống hoặc ẩn đi.
Nguyên tắc của dữ liệu luôn phải có ngày tháng, số thứ tự. Đủ các thông tin thì sau đó muốn làm gì cũng dễ như trở bàn tay

Vài lời chia sẻ cách làm việc với Excel

Bác nói thì em hiểu. Không phải là không biết sắp sếp cho dể dàng cộng. Mà phải vậy thì mới tiến bộ được, ( Và còn rất nhiều trường hợp không sắp xếp được trong 1 databale lớn của phần mềm. rất mong Bác hiểu điều đó ) Nếu dữ liệu sắp sếp thì em lên đây hỏi làm gì nữa hả Bác. Cảm ơn bác nhé
 
Upvote 0
Upvote 0
Bác nói thì em hiểu. Không phải là không biết sắp sếp cho dể dàng cộng. Mà phải vậy thì mới tiến bộ được, ( Và còn rất nhiều trường hợp không sắp xếp được trong 1 databale lớn của phần mềm. rất mong Bác hiểu điều đó ) Nếu dữ liệu sắp sếp thì em lên đây hỏi làm gì nữa hả Bác. Cảm ơn bác nhé
Nếu bạn nói vậy thì tham khảo code này. Chỉ tham khảo thôi vì mình chỉ viết code cho ra đúng kết quả như bạn mong đợi trong file mẫu
Bất kỳ có thay đổi gì thì code cũng không đúng vì mình viết code rất đơn sơ nhưng lại chứa nhiều phức tạp bên trong
Mã:
Sub abc()
Dim sArr(), i As Long, Dic As Object, Tmp As String, k As Long, j As Long, x As Long
Dim TenHang(), SL()
Set Dic = CreateObject("scripting.dictionary")
sArr = [B5:L10000].Value
SL = Array(2, 6, 11)
TenHang = Array(1, 4, 8)
ReDim Preserve sArr(1 To UBound(sArr), 1 To UBound(sArr, 2) + 3)
For i = 1 To UBound(sArr)
   For j = LBound(SL) To UBound(SL)
      If sArr(i, TenHang(j)) <> Empty Then
         Tmp = sArr(i, TenHang(j))
         Tmp = Replace(LCase(Tmp), " ", "")
         If Not Dic.exists(Tmp) Then
            k = k + 1
            Dic.Add Tmp, k
            sArr(k, UBound(sArr, 2) - 1) = sArr(i, TenHang(j))
            sArr(k, UBound(sArr, 2)) = sArr(i, SL(j))
         Else
            x = Dic.Item(Tmp)
            sArr(x, UBound(sArr, 2)) = sArr(x, UBound(sArr, 2)) + sArr(i, SL(j))
         End If
      End If
   Next
Next
[B5].Resize(UBound(sArr), UBound(sArr, 2)) = sArr
End Sub
 
Upvote 0
... Mà phải vậy thì mới tiến bộ được, ( Và còn rất nhiều trường hợp không sắp xếp được trong 1 databale lớn của phần mềm...

Muốn tiến bộ thì phải biết theo tiến hoá của CNTT. Muốn làm việc với Database thì phải có kiến thức về các công cụ của Database.

Sử lý "databale lớn" [sic] mà không dùng ADO lại đòi dùng Dictionary. "Tiến bộ" kiểu này vượt hơn cả Microsoft.

Chú thích: Diễn đàn là nơi chia sẻ chung. Tôi nói cho các bạn có vấn đề tương tự không phải hiểu lầm bản chất của CSDL, cứ muốn hù hoạ ai thì dùng từ database cho nó xịn.
Dạng bài này nếu bạn nào thật sự muốn học hỏi thì nên học cách dựng Data Model của Excel 2013/16. Sau khi có Data Model rồi thì chuẩn hoá nó và dùng Pivot Table như bài #2 nói. (khong dùng 2013/16 cũng được, nhưng ở đây tôi nói về công cụ mới của Excel mà người muốn tiến bộ nên tìm hiểu qua)

(*) bale là một kiện lớn của rơm/vải/len dạng thô. Databale là muốn nói một kiện dữ liệu thô?
 
Upvote 0
Web KT

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

Back
Top Bottom