Cắt dán số tương ứng theo Stt (1 người xem)

Liên hệ QC

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

toandiennuoc123

Thành viên thường trực
Tham gia
7/3/12
Bài viết
239
Được thích
9
Chào các bạn ! Tôi có bài này muốn nhờ các bạn giúp đỡ. Các bạn xem file đính kèm. Xin cám ơn
 

File đính kèm

Chào các bạn ! Tôi có bài này muốn nhờ các bạn giúp đỡ. Các bạn xem file đính kèm. Xin cám ơn

bạn chạy thử code sau:
Mã:
Sub GPE_tim()
Dim rng As Range, vung As Range, ArrSTT As Range
Set vung = Range("C3:C1000")
Set ArrSTT = Range([A65536].End(xlUp), [A3])
'nho' unhide row truoc khi copy
    Application.ScreenUpdating = False
    ArrSTT.Offset(, 1).ClearContents '<=>Range("B3:B102").ClearContents
    
    For Each rng In ArrSTT
        If rng <> "" Then
            x = Application.WorksheetFunction.CountIf(vung, rng)
            If x > 0 Then rng.Offset(, 1) = x
        End If
    Next
    Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
bạn chạy thử code sau:
Mã:
Sub GPE_tim()
Dim rng As Range, vung As Range, ArrSTT As Range
Set vung = Range("C3:C1000")
Set ArrSTT = Range([A65536].End(xlUp), [A3])
'nho' unhide row truoc khi copy
    Application.ScreenUpdating = False
    ArrSTT.Offset(, 1).ClearContents '<=>Range("B3:B102").ClearContents
    
    For Each rng In ArrSTT
        If rng <> "" Then
            x = Application.WorksheetFunction.CountIf(vung, rng)
            If x > 0 Then rng.Offset(, 1) = x
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Hiện tại đang chạy ngon lành, Cám ơn bạn nhiều !
 
Upvote 0
Hiện tại đang chạy ngon lành, Cám ơn bạn nhiều !
Thêm 1 Sub "tà đạo" nữa nè:
[GPECODE=vb]Public Sub GPEX()
Dim sArr(), dArr(), tArr(), I As Long, R As Long
sArr = Range([A3], [A65536].End(xlUp)).Value2
R = UBound(sArr, 1)
ReDim dArr(1 To R, 1 To 1)
tArr = Range([C3], [C65536].End(xlUp)).Value2
For I = 1 To UBound(tArr, 1)
If tArr(I, 1) <> Empty And tArr(I, 1) <= R Then dArr(tArr(I, 1), 1) = dArr(tArr(I, 1), 1) + 1
Next I
[B3].Resize(UBound(sArr, 1)) = dArr
End Sub[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
@phucbugis: Bài này giản dị là đếm frequency mà. Tại chủ thớt không rõ vấn đề nên thành ra rườm rà.
Nếu đã dùng hàm worksheet thì dùng thẳng hàm frequency luôn cho gọn.

Mã:
Sub t()
arr = WorksheetFunction.Frequency(Range([C3], [C65536].End(xlUp)), Range([A3], [A65536].End(xlUp)))
For I = LBound(arr) To UBound(arr)
If arr(I, 1) = 0 Then arr(I, 1) = "" ' loại các ô  không có trị số
Next I
[B3].Resize(UBound(arr) - LBound(arr)) = arr
End Sub
 
Upvote 0
@phucbugis: Bài này giản dị là đếm frequency mà. Tại chủ thớt không rõ vấn đề nên thành ra rườm rà.
Nếu đã dùng hàm worksheet thì dùng thẳng hàm frequency luôn cho gọn.

Mã:
Sub t()
arr = WorksheetFunction.Frequency(Range([C3], [C65536].End(xlUp)), Range([A3], [A65536].End(xlUp)))
For I = LBound(arr) To UBound(arr)
If arr(I, 1) = 0 Then arr(I, 1) = "" ' loại các ô  không có trị số
Next I
[B3].Resize(UBound(arr) - LBound(arr)) = arr
End Sub

Cảm ơn bác --> cho e hỏi,

hàm đó có thể trả về kết quả cho nhiều hơn 1 cột được ko :-=?

Link: https://www.mediafire.com/?197rqxoemmrzn24
 
Lần chỉnh sửa cuối:
Upvote 0
Trả lời đơn giản: Không!
 
Upvote 0
bạn thử dùng công thức này xem sao: tại ô L3 = countifs($c$3:$c$29,k3)
 
Upvote 0

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

Back
Top Bottom