Board logo

標題: [發問] 如何將COUNTIF公式轉VBA語法 [打印本頁]

作者: jsc0518    時間: 2021-11-22 12:01     標題: 如何將COUNTIF公式轉VBA語法

Dear all,
我試著想把下列公式改成VBA語法,但結果是失敗的,是否可以幫我看一下語法哪裡有誤?
F2=COUNTIF(繳庫量!G$2:G$20000,A2)




Sub Countif()

    For i = 2 To 65536 Step 1
            For j = 2 To [g65536].End(3).Row
   
        Cells("G", i).Value = WorksheetFunction.CountIf(Sheets("繳庫量").Cells("G", j), Cells("A", i))
        
        Next j
    Next i

End Sub
作者: samwang    時間: 2021-11-22 13:23

回復 1# jsc0518

請測試看看,謝謝
Sub test()
Dim Arr, Brr, i&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([g2], [g65536].End(3))
For i = 1 To UBound(Arr): xD(Arr(i, 1) & "") = 1: Next
Brr = Range([a2], [a65536].End(3))
For i = 1 To UBound(Brr): Brr(i, 1) = xD(Brr(i, 1) & ""): Next
Range("f2").Resize(UBound(Brr)) = Brr
End Sub
作者: jsc0518    時間: 2021-11-22 14:57

回復 2# samwang
Dear samwang,
午安!感謝您的回覆。
抱歉問題、檔案未提供說明清楚。我的結果畫面如下圖,但我現在是用Excel公式,想把COUNTIF公式轉VBA語法
[attach]34421[/attach]

[attach]34422[/attach]
作者: samwang    時間: 2021-11-22 16:01

回復  samwang
Dear samwang,
午安!感謝您的回覆。
抱歉問題、檔案未提供說明清楚。我的結果畫面如下圖 ...
jsc0518 發表於 2021-11-22 14:57


請測試看看,謝謝
Sub test()
Dim Arr, Brr, xD, i&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([繳庫量!g2], [繳庫量!g65536].End(3))
For i = 1 To UBound(Arr): xD(Arr(i, 1) & "") = xD(Arr(i, 1) & "") + 1: Next
With Sheets("Analysis")
    Brr = .Range(.[a2], .[a65536].End(3))
    For i = 1 To UBound(Brr):
        If xD(Brr(i, 1) & "") > 0 Then
            Brr(i, 1) = xD(Brr(i, 1) & "")
        Else
            Brr(i, 1) = 0
        End If
    Next
    .Range("f2").Resize(UBound(Brr)) = Brr
End With
End Sub
作者: jsc0518    時間: 2021-11-22 17:06

回復 4# samwang
Dear samwang,
測試OK,感謝您的幫忙!大感恩!
作者: 劉大胃    時間: 2021-11-23 15:55

Sub Countif()

    a = Sheets("繳庫量").Range("G65536").End(3).Row
    b = ActiveSheet.Range("A65536").End(3).Row
   
    For i = 2 To b Step 1
   
        ActiveSheet.Range("G" & i).Value = WorksheetFunction.Countif(Sheets("繳庫量").Range("G2:G" & a), ActiveSheet.Range("A" & i).Value)
        
    Next i

End Sub
作者: ML089    時間: 2021-11-23 16:31

Sub Macro1()
    Set sh = Sheets("Analysis")
    With Range(sh.[A2], sh.[A2].End(xlDown))
        .Offset(, 4).Formula = "=COUNTIF(繳庫量!G:G,A2)"
        .Offset(, 4).Value = .Offset(, 4).Value
    End With
End Sub
作者: jsc0518    時間: 2021-11-23 20:12

回復 7# ML089
Dear ML089,
晚上好!感謝您的熱心指導與分享!
試用過後可用。太棒囉!大感謝!
^^




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)