1
resposta

Contar condições que se repetem em colunas diferentes, =CONT.SES

Olá, eu gostaria de saber como contar quantas vezes duas ou mais condições que se repetem em duas colunas de forma semelhante a função =CONT.SES do Excel mas usando o VBA usando Or e AND, realizei alguns testes e o resultado sempre dá 0. Por exemplo quero saber quantas vezes a condição1 OU condição2 aparecem no coluna A E a condição3 aparecem na coluna B e que o resultado seja marcado na célula C1 Segue o código que fiz:

Sub contagem() Dim contagem As Integer Sheets(1).Select Range("A1").Select contagem = 0 Do Until ActiveCell = "" If ActiveCell = "condição1" Or ActiveCell = "condição2" AND ActiveCell.Offset(0, 1) = "condição3" Then contagem = contagem + 1 End If ActiveCell.Offset(1, 0).Select Loop Range("C1").Value = contagemEnd Sub

1 resposta

Olá Thiago,

Pelo o que eu entendi você quer uma macro que use a mesma ideia da função Cont.ses. Acontece que no VBA existe tal função chamada "CountIfs". No exemplo abaixo a coluna A possui diversas condições... "Condição1", "Condição2" e na coluna B, possui algumas celulas com a "Condição3". Coloquei as celulas F1 e F2 para estabelecer qual condição você quer contar das colunas A e B. Após rodar a macro ela irá colocar o resultado da contagem na celula "C1". Segue o código:

Sub contagem()

Dim qt As Integer, resultado As Integer
Dim wsPlan1 As Worksheet
Dim condicaol1 as string, condicaol2 as string

Set wsPlan1 = Sheets(1)


condicaol1 = Cells(1, 6).Value 'Celula F1, onde irá colocar a condição que quer
condicaol2 = Cells(2, 6).Value 'Celula F2, onde irá colocar a condição que quer

qt = Range("A1").CurrentRegion.Rows.Count 'Conta quantas linhas estão preenchidas na coluna A
resultado = Application.WorksheetFunction.CountIfs(wsPlan1.Range("A2:A" & qt), condicaol1, wsPlan1.Range("B2:B" & qt), condicaol2)

Range("C1").Value = resultado 'Coloca o resultado na celula C1

End Sub

Espero ter ajudado.