Notifications
Clear all

VBA - Contar se valores correspondem

7 Posts
4 Usuários
0 Reactions
1,404 Visualizações
(@ramzero)
Posts: 0
New Member
Topic starter
 

Olá pessoal

Como faço em VBA a função CONT.SE

Exemplo

A1 Elefante
A2 Elefante
A3 Girafa
A4 Girafa
A5 Elefante
A6 Elefante
A7 Elefante
A8 Girafa
A9 Girafa
A10 Elefante

E daí fazer aparecer em P3 6 e em Q3 4

Tentei aqui e não consegui, preciso que seja sempre as últimas 10 linhas

Sub Contse()
    Dim i As Long
    Dim elefante As String
    Dim girafa As String
    For i = Sheets("Plan1").Cells(Rows.Count, "A").End(xlUp).Row - 10 To Sheets("Plan1").Cells(Rows.Count, "A").End(xlUp).Row
        
        If Plan1.Range("C" & i).Value = "Elefante" Then
        elefante = cont.se(Plan1.Range("C" & i).Value = "Elefante")
        End If
        If Plan1.Range("C" & i).Value = "Girafa" Then
        girafa = cont.se(Plan1.Range("C" & i).Value = "Girafa")
        End If
    Next i
        Plan1.Range("P3").Value = elefante
        Plan1.Range("Q3").Value = girafa
        
        
End Sub

Obrigado

 
Postado : 15/02/2018 5:10 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tente assim :

Sub Count_If()

    Dim xCountif As WorksheetFunction
    
    Set xCountif = Application.WorksheetFunction
    
    Range("P3").Value = xCountif.CountIf(Plan1.Range("a:a"), "Elefante")
    Range("Q3").Value = xCountif.CountIf(Plan1.Range("a:a"), "Girafa")

End Sub

[]s

 
Postado : 15/02/2018 5:36 am
(@wzxnet7)
Posts: 0
New Member
 

Bom dia.
Mais uma contribuição:

Sub contse()

Dim w As Worksheet, ulinha As Long, PLinha As Long
Dim rng As Range
Dim wkf As WorksheetFunction
Dim elefante As Long
Dim girafa As Long
Set wkf = Application.WorksheetFunction
Set w = Planilha1 '[size=150]aqui vc coloca a planilha certa[/size]

ulinha = w.Cells(w.Rows.Count, 1).End(3).Row

PLinha = ulinha - 9

    If PLinha < 1 Then PLinha = 1


Set rng = w.Range("A" & PLinha, "A" & ulinha)


elefante = wkf.CountIf(rng, "elefante")
girafa = wkf.CountIf(rng, "girafa")

w.Range("p3").Value = 0
w.Range("q3").Value = 0


w.Range("p3").Value = elefante
w.Range("q3").Value = girafa



End Sub
 
Postado : 15/02/2018 5:51 am
(@ramzero)
Posts: 0
New Member
Topic starter
 

Bom dia wzxnet7

Deu certo porém ele pisca e some o valor (a célula fica em branco no instante seguinte), tem como resolver?

Fiz uma alteração senão pisca o 0 e nem dá pra ver o resultado

Sub contse()

Dim w As Worksheet, ulinha As Long, PLinha As Long
Dim rng As Range
Dim wkf As WorksheetFunction
Dim elefante As Long
Dim girafa As Long
Set wkf = Application.WorksheetFunction
[color=#FF0000]Set w = Plan1[/color]

ulinha = w.Cells(w.Rows.Count, 1).End(3).Row

PLinha = ulinha - 9

    If PLinha < 1 Then PLinha = 1


Set rng = w.Range("A" & PLinha, "A" & ulinha)


elefante = wkf.CountIf(rng, "elefante")
girafa = wkf.CountIf(rng, "girafa")

[color=#FF0000]' w.Range("p3").Value = 0
' w.Range("q3").Value = 0[/color]


w.Range("p3").Value = elefante
w.Range("q3").Value = girafa



End Sub

Obrigado

 
Postado : 15/02/2018 6:44 am
(@ramzero)
Posts: 0
New Member
Topic starter
 

Bom dia Mauro Coutinho

Problema é que preciso só das últimas 10 linhas da coluna C

Obrigado

 
Postado : 15/02/2018 6:46 am
(@klarc28)
Posts: 0
New Member
 

Anexo

 
Postado : 15/02/2018 6:59 am
(@ramzero)
Posts: 0
New Member
Topic starter
 

Mais uma tacada de mestre Klarc28

Obrigado :D

 
Postado : 15/02/2018 10:03 am