返回列表 上一主題 發帖

[發問] 如何將COUNTIF公式轉VBA語法

[發問] 如何將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
Just do it.

回復 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

TOP

回復 2# samwang
Dear samwang,
午安!感謝您的回覆。
抱歉問題、檔案未提供說明清楚。我的結果畫面如下圖,但我現在是用Excel公式,想把COUNTIF公式轉VBA語法
Noname.jpg
2021-11-22 14:57


TEST.rar (8.6 KB)
Just do it.

TOP

回復  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

TOP

回復 4# samwang
Dear samwang,
測試OK,感謝您的幫忙!大感恩!
Just do it.

TOP

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
新手上路,請多包涵。

TOP

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
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

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

TOP

        靜思自在 : 原諒別人就是善待自己。
返回列表 上一主題