Sử dụng Scripting.Dictionary (1 người xem)

Liên hệ QC

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

overnight_9

strive for mastery
Tham gia
4/7/12
Bài viết
160
Được thích
81
Nghề nghiệp
Công nhân
Bài này em muốn sữ dụng Scripting.Dictionary, xin các anh chị giúp đoạn code.

từ sheet1 lọc dữ liệu qua sheets("tong").
- Căn cứ tiêu đề số (11, 13, 14, 15, 16) là điều kiện, nếu trùng thì gọp số lượng ở cột X sheet1 và gán qua cột V của sheets("tong").
- Nếu không trùng thì copy dán nối tiếp phía dưới sheets("tong").
- copy các cells tương ứng được đánh số qua luôn.

Em cám ơn anh chị.
 

File đính kèm

Bài này em muốn sữ dụng Scripting.Dictionary, xin các anh chị giúp đoạn code.

từ sheet1 lọc dữ liệu qua sheets("tong").
- Căn cứ tiêu đề số (11, 13, 14, 15, 16) là điều kiện, nếu trùng thì gọp số lượng ở cột X sheet1 và gán qua cột V của sheets("tong").
- Nếu không trùng thì copy dán nối tiếp phía dưới sheets("tong").
- copy các cells tương ứng được đánh số qua luôn.

Em cám ơn anh chị.
Hình như cái bài "lộn xộn cột" này đã gặp rồi mà ta?
Đã có tương tự rồi mà chưa áp dụng được sao?
Hổng biết bài cũ nằm ở đâu mà mò. "Mần lại" vậy.
 

File đính kèm

Hình như cái bài "lộn xộn cột" này đã gặp rồi mà ta?
Đã có tương tự rồi mà chưa áp dụng được sao?
Hổng biết bài cũ nằm ở đâu mà mò. "Mần lại" vậy.

Em cám ơn bác BaTe,
Đúng vậy bác BaTe bài này có rồi nhưng bài trước phức tạp quá, mà mấy hôm em ngâm cái array rồi nhảy qua Scripting.Dictionary em lùng bùng luôn, nên em nhờ bác làm lại cái cú pháp đơn giản để em mò mới nhập tâm.

Bác Bate ơi, bác check giúp em có 1 vấn đề là.
trong sheets("tong") ở cột U có số lượng sẵn thì sau khi lọc qua code clear luôn cột số lượng này bác ơi, ý em là không clear các cột số lượng có sẵn trước nó.
và cứ như thế nếu mình gán số lượng tiếp cột W... thì phải giữ số lượng các cột trước nó.

bác chỉnh giúp em tí, em cám ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Chắc các bác bận rộn, em thử áp dụng là cho nó chạy ngược lại dùng offset rồi trừ thụt lùi từ phải qua trái.
 
Chắc các bác bận rộn, em thử áp dụng là cho nó chạy ngược lại dùng offset rồi trừ thụt lùi từ phải qua trái.

Thử thế này xem, ráng hiểu chứ chắc là không trúng. Dạo này đầu óc nặng quá.
Muốn luyện Dic mà xem code cao cấp của anh Batê là tẩu hoả, mà xem code của mình thì chắc cũng tiêu thôi, vì mình khai báo loạn cào cào. Viết code mà khai báo kiểu này là coi chừng mấy tiền bối phạt thẻ vàng đấy

PHP:
Sub luxubu_qua()
Dim d, i, j, jj, dl
Dim kq(1 To 1000, 1 To 11), dk
Set d = CreateObject("scripting.dictionary")
With Sheets("tong")
  dl = .Range(.[L23], .[L65536].End(3)).Resize(, 10).Value
End With
For i = 1 To UBound(dl)
  dk = dl(i, 1) & dl(i, 3) & dl(i, 4) & dl(i, 5) & dl(i, 6)
    If Not d.exists(dk) Then
      j = j + 1
        d.Add dk, j
          For jj = 1 To 10
            kq(j, jj) = dl(i, jj)
          Next
    End If
Next
dl = Sheet1.Range(Sheet1.[P24], Sheet1.[P65536].End(3)).Resize(, 9).Value
For i = 1 To UBound(dl)
  dk = dl(i, 1) & dl(i, 3) & dl(i, 4) & dl(i, 5) & dl(i, 6)
    If Not d.exists(dk) Then
      j = j + 1
        d.Add dk, j
          For jj = 1 To 8
            kq(j, jj) = dl(i, jj)
          Next
        kq(j, 11) = dl(i, 9)
  Else
    kq(d.Item(dk), 11) = dl(i, 9)
  End If
Next
Sheets("tong").[L23].Resize(j, 11) = kq
End Sub
 
Lần chỉnh sửa cuối:
Thử thế này xem, ráng hiểu chứ chắc là không trúng. Dạo này đầu óc nặng quá.
Muốn luyện Dic mà xem code cao cấp của anh Batê là tẩu hoả, mà xem code của mình thì chắc cũng tiêu thôi, vì mình khai báo loạn cào cào. Viết code mà khai báo kiểu này là coi chừng mấy tiền bối phạt thẻ vàng đấy

Cảm ơn bác BaTe & a Q.Hải, 2 bài này nói lên hết cái em cần rồi, để em ngâm cho nó lên men mới được, cái ông "vòng lặp" gọi em rồi, kết hợp được 3 cái For thì mới nuốt trôi 2 ông Array & Dic này & áp dụng các bài khác mới suông.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom