Nhờ anh chị giúp Dictionary thay hàm Sumif (4 người xem)

Liên hệ QC

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

Yêu thì nhận là yêu chứ gì mà ngại. Với công thức của bạn Thóc_Sama =IF(B2="","",IF(ISNUMBER(A1),A1+1,1)), không dùng evaluate:
Mã:
[A2:A10] = ("=IF(RC[1]="""","""",if(isnumber(R[-1]C),R[-1]C + 1,1))")
[A2:A10]=[A2:A10].value
Ngày xưa mới biết code con cũng hay viết kiểu này nhưng thời buổi này con thấy quê rồi chú , đó là con không thích kiểu này nữa thôi :D
Tại sao không dùng vòng lặp For Next cho đơn giản??? Tại sao cứ phải Evaluate???
Chào anh Quang Hải
Dạ, vì for next dài dòng:
Mã:
Dim i As Long
Dim lastRow As Long
lastRow = wsResult.Cells(wsResult.Rows.Count, 2).End(xlUp).Row

Dim lastNumber As Long
lastNumber = 0

For i = 2 To lastRow
    If IsEmpty(wsResult.Cells(i, 2)) Then
        wsResult.Cells(i, 1).Value = ""
        lastNumber = 0
    Else
        lastNumber = lastNumber + 1
        wsResult.Cells(i, 21).Value = lastNumber
    End If
Next i

còn Evaluate thì là OT thấy gọn và lạ nên muốn tham khảo xem với dữ liệu xen kẽ dạng này thì xử lý thế nào thôi ạ nếu hay thì với OT là mốt mới :D.
 
Chào anh Quang Hải
Dạ, vì for next dài dòng:
Mã:
Dim i As Long
Dim lastRow As Long
lastRow = wsResult.Cells(wsResult.Rows.Count, 2).End(xlUp).Row

Dim lastNumber As Long
lastNumber = 0

For i = 2 To lastRow
    If IsEmpty(wsResult.Cells(i, 2)) Then
        wsResult.Cells(i, 1).Value = ""
        lastNumber = 0
    Else
        lastNumber = lastNumber + 1
        wsResult.Cells(i, 21).Value = lastNumber
    End If
Next i

còn Evaluate thì là OT thấy gọn và lạ nên muốn tham khảo xem với dữ liệu xen kẽ dạng này thì xử lý thế nào thôi ạ nếu hay thì với OT là mốt mới :D.
Theo mình thì:
- Nếu chỉ đơn giản đánh số thứ tự thì dùng công thức cho gọn
- Nếu xử lý gì đó thì chắc sẽ có dùng vòng lặp, lúc đó kết hợp đánh stt luôn.
 
Ngày xưa mới biết code con cũng hay viết kiểu này nhưng thời buổi này con thấy quê rồi chú , đó là con không thích kiểu này nữa thôi :D
Có mỗi chuyện đánh số thứ tự mà hết yêu đến ngại, hết quê đến tỉnh. Mà chẳng thà quê mùa mà gọn, viết nhanh, còn hơn viết nửa tiếng mà cũng chỉ ăn được 5 ngàn đồng bạc như người khác viết 1 phút.
 
Tại sao không dùng vòng lặp For Next cho đơn giản??? Tại sao cứ phải Evaluate???
Tại vì cách ấy là chính các tay chuyên trong nghề VBA đưa ra.
Họ lý luận rằng nó nhanh và gọn hơn vòng lặp nhiều.
Nhanh thì đối vớitôi không quan tronbgj lắm. Nhưng gọn là tôi khoái. Ứng dụng tôi đưa ở chỗ đánh STT là rất gọn, và đáp ứng tôn chỉ "việc nào ra việc ấy" của tôi (không nhét chung với code truy xuất dữ liệu)
 
Lần chỉnh sửa cuối:

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom