Mam pewne dane w moim aktywnym skoroszytowym numerze nr 3 . kolumna A zawiera unikalną wartość. Chcę policzyć liczbę razy każda wartość istnieją w kolumnie a .

Napisałem następujący kod, ale coś jest strasznie źle z moim logiką. Pomóż mi rozwiązać problem.

Sub cuntef()
    ThisWorkbook.Sheets("sheet3").Activate
    For i = 2 To 13

         ActiveSheet.Range("C" & i).Value = _
             Application.WorksheetFunction.CountIf _
             (ActiveSheet.Range("A" & i), ActiveSheet.Range("A" & i))

    Next
End Sub
0
D. Ace 19 luty 2018, 12:34

3 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego kodu.

Sub cuntef()

    Dim Rng As Range
    Dim Cell As Range

    With ThisWorkbook.Sheets("Sheet3")
        Set Rng = Range(.Cells(2, "A"), .Cells(13, "A"))
        For Each Cell In Rng
            Cell.Offset(0, 2).Value = Application.CountIf(Rng, Cell.Value)
        Next Cell
    End With
End Sub
1
Variatus 19 luty 2018, 09:55

Myślę, że nie ma potrzeby pętli. Spróbuj tego:

Sub marine()
    With Thisworkbook.Sheets("sheet3").Range("C2:C13")
        .Formula = "=COUNTIF(A$2:A$13,A2)"
        .Value2 = .Value2
    End With
End Sub
2
L42 19 luty 2018, 09:51

Jeśli chcesz dodać licznik do kolumny C z rzędu 2, aby trwać, to następuje to dla Ciebie:

Sub foo()
Dim LastRow As Long
Dim rng As Range
Dim ws As Worksheet: Set ws = Sheets("Sheet3")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'get the last row with data on Column A
Set rng = ws.Range("C2:C" & LastRow) 'amend this range to apply formula to.

rng.FormulaR1C1 = "=COUNTIF(C[-2],RC[-2])"
'rng.Value = rng.Value 'uncomment this line if you want to get the value in the cell and not the formualt
End Sub
1
Xabier 19 luty 2018, 09:49