Vba thay thế hàm Countifs.

FPT_online

Thành viên hoạt động
Tham gia ngày
27 Tháng mười 2013
Bài viết
133
Được thích
16
Điểm
370
Tuổi
37
Bạn thử dữ liệu với 60000 dòng ở trang dữ liệu và 1000 dòng ở trang kết quả xem thế nào.Mình không cười ai cả mình thấy thế góp ý cho bạn thôi.Nêu bạn không thích thì thôi mình xin lỗi.
Không cần phải thử gì cả, dữ liệu gì thì máy vẫn phải kiểm tra tới chứ có bỏ qua được đâu, vấn đề là đừng để nó kiểm tra đi kiểm tra lại nhiều lần thôi. Tôi thấy bạn đang cười tôi ở trên đó mà bạn nói không cười
 

todaya5

Thành viên mới
Tham gia ngày
27 Tháng mười hai 2011
Bài viết
2
Được thích
0
Điểm
363
em nhờ các bác trên diễn đàn giúp em
em muốn tổng hợp tồn kho nhập xuất tồn
théo chi nhánh hải hà
theo chi nhanh đầm hà
và tổng công ty
em cảm ơn nhiều
 

File đính kèm

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
9,559
Được thích
11,443
Điểm
1,560
Trời, cả năm rồi mà còn có ngừoi đào mồ lên, hỏi một câu chẳng ăn nhập gì với chủ đề thớt hết.
Mà người này lại là thành viên từ hơn tám năm về trước mới ác. Khả năng là lười đăng ký nít mới cho nên mượn nít hỏi bài.
 

todaya5

Thành viên mới
Tham gia ngày
27 Tháng mười hai 2011
Bài viết
2
Được thích
0
Điểm
363
Trời, cả năm rồi mà còn có ngừoi đào mồ lên, hỏi một câu chẳng ăn nhập gì với chủ đề thớt hết.
Mà người này lại là thành viên từ hơn tám năm về trước mới ác. Khả năng là lười đăng ký nít mới cho nên mượn nít hỏi bài.
nhập xuất tồn mình đang dùng công thức counifs mà bác.
giờ muốn chuyển thành code vba cho tiện, vì công thức chạy chậm quá
 

phananhvusv

Thành viên chính thức
Tham gia ngày
28 Tháng ba 2017
Bài viết
65
Được thích
12
Điểm
170
Tuổi
33
Các bác giúp em với ạ. Em gặp tình trạng giống chủ thớt, nhưng file của em có nhiều cột nên không biết làm thế nào. Do nhiều file hơn 200.000 dòng, mà phải 3 hoặc 4 điều kiện lọc nên dùng Countifs thì máy tính đơ luôn ạ.
Em gởi file cắt bớt còn 50 dòng cho nhẹ. Các điều kiện đếm là 4 cột "hoten, ngaysinh, gioitinh, diachi".
Nhờ các bác giúp đỡ.
 

File đính kèm

Maika8008

Thành viên từ sao Hỏa
Tham gia ngày
12 Tháng sáu 2020
Bài viết
388
Được thích
292
Điểm
60
Các bác giúp em với ạ. Em gặp tình trạng giống chủ thớt, nhưng file của em có nhiều cột nên không biết làm thế nào. Do nhiều file hơn 200.000 dòng, mà phải 3 hoặc 4 điều kiện lọc nên dùng Countifs thì máy tính đơ luôn ạ.
Em gởi file cắt bớt còn 50 dòng cho nhẹ. Các điều kiện đếm là 4 cột "hoten, ngaysinh, gioitinh, diachi".
Nhờ các bác giúp đỡ.
Bạn đọc giờ giấc giùm để khỏi mang tiếng là nhà khảo cổ. Với đề của bạn, tôi nghĩ diễn đàn này đã có câu trả lời, bạn chỉ cần dùng chức năng tìm kiếm là thấy. Nếu lười thì bạn đăng thành 1 bài mới, sẽ có người giúp bạn.
 

phananhvusv

Thành viên chính thức
Tham gia ngày
28 Tháng ba 2017
Bài viết
65
Được thích
12
Điểm
170
Tuổi
33
Bạn đọc giờ giấc giùm để khỏi mang tiếng là nhà khảo cổ. Với đề của bạn, tôi nghĩ diễn đàn này đã có câu trả lời, bạn chỉ cần dùng chức năng tìm kiếm là thấy. Nếu lười thì bạn đăng thành 1 bài mới, sẽ có người giúp bạn.
Mình nghĩ bài này phù hợp với vấn đề của mình nên mới đăng vào đây chứ không phải lười tạo thread mới. Còn tìm kiếm thì mình không biết phải dùng từ khóa thế nào cho nó phù hợp. Nếu mình phạm quy thì cho mình xin lỗi. Mình sẽ tìm thử.
 

Maika8008

Thành viên từ sao Hỏa
Tham gia ngày
12 Tháng sáu 2020
Bài viết
388
Được thích
292
Điểm
60
Mình nghĩ bài này phù hợp với vấn đề của mình nên mới đăng vào đây chứ không phải lười tạo thread mới. Còn tìm kiếm thì mình không biết phải dùng từ khóa thế nào cho nó phù hợp. Nếu mình phạm quy thì cho mình xin lỗi. Mình sẽ tìm thử.
Tôi không trách gì bạn nhưng 1 chủ đề đã bị chê là đào mộ mà mình còn chen vào nhờ thì khó tìm được người giúp.
 

hunglam123

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia ngày
31 Tháng ba 2020
Bài viết
180
Được thích
40
Điểm
35
Tuổi
32
Trời, cả năm rồi mà còn có ngừoi đào mồ lên, hỏi một câu chẳng ăn nhập gì với chủ đề thớt hết.
Mà người này lại là thành viên từ hơn tám năm về trước mới ác. Khả năng là lười đăng ký nít mới cho nên mượn nít hỏi bài.
Quá đơn giản
Mã:
Public Sub Mazda()
                                                Const C As Long = 200 - 180
Dim sArr(), dArr(), I As Long, K As Long, R As Long, Rws As Long, Col As Long, xCoL As Long, Tmp As Variant
                                                                         sArr = Sheets("DANH SACH").Range("C2", Sheets("DANH SACH").Range("C1000000").End(xlUp)).Resize(, 3).Value
R = UBound(sArr)
                                        ReDim dArr(1 To R, 1 To C)
                                                With CreateObject("Scripting.Dictionary")
    dArr(1, 1) = "STT"
                                                                                                                                   dArr(1, 2) = sArr(1, 1)
                                                    dArr(1, 3) = "NAM"
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                    
                                                     dArr(1, 4) = "NU"
    K = 1: Col = 4
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    For I = 2 To R
    
    
    
    
    
    
    
    
    
    If sArr(I, 1) <> Empty Then
      
          
                Tmp = sArr(I, 1)
                
                
                
                
                
                
                
        If Not .Exists(Tmp) Then
            K = K + 1
                         .Item(Tmp) = K
            dArr(K, 1) = K - 1
            
            
            
            
            
            
            
            
            
            dArr(K, 2) = Tmp
            
            
            
            
            
            
            
            
            
        End If
              
        Tmp = sArr(I, 3)
                                                                            If Not .Exists(Tmp) Then
                          Col = Col + 1
            .Item(Tmp) = Col
            
            
            
            
            
            
            
            
            
            
            
            
            dArr(1, Col) = Tmp
        End If

   Rws = .Item(sArr(I, 1))
  
  
  
  
  
  
  
  
  
  
                                                          If sArr(I, 2) = "NAM" Then
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                                                          
                          dArr(Rws, 3) = dArr(Rws, 3) + 1
                                                  Else
                                         dArr(Rws, 4) = dArr(Rws, 4) + 1
        End If
        

 
        xCoL = .Item(sArr(I, 3))
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
                                                  dArr(Rws, xCoL) = dArr(Rws, xCoL) + 1
    End If
                                                                                                                                                    Next I
End With
                                                                                                                                                                                                With Sheets("TONG HOP")
    .Range("A3").Resize(1000000, C).ClearContents
                                                                                                                                                    .Range("A3").Resize(K, Col) = dArr
End With
End Sub
 
Top Bottom