Notifications
Clear all

Utilizar uma matriz como argumento no Worksheetfunction

3 Posts
2 Usuários
0 Reactions
1,320 Visualizações
(@leonardo)
Posts: 81
Trusted Member
Topic starter
 

Olá, estou tentando utilizar uma matriz como argumento de intervalo e também como argumento de critério em uma worksheetfunction, porém não está dando certo. 

Abaixo um exemplo:

 

Sub Teste()

  Dim Intervalo As Variant
  Dim Criterio As Variant

  Intervalo() = Range("A1:A14")
  Criterio() = Range("C1")

  Contar = Application.WorksheetFunction.CountIf(Intervalo(), Criterio())

End Sub

 _____________________________________

Editado pela Moderação. Motivo: Procure utilizar o botão Código (< >) sempre que for inserir código VBA ou Fórmulas.

 

 
Postado : 02/04/2022 11:12 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Olá, @leonardo.

O primeiro argumento (Intervalo) da função CONT.SE do Excel não aceita nenhum outro tipo de argumento que não seja Intervalo normal mesmo (Range). Portanto, vc só poderá usar uma matriz ou outro tipo de variável no segundo argumento.

No entanto, no VBA vc pode usar o próprio Range diretamente em vez de atribuir primeiro a uma variável, caso queira. Caso contrário, tem que atribuir objeto Range usando Set.

Alguns exemplos de como vc poderia atingir seu objetivo:

Sub Teste()
  Dim Intervalo As Range '(ou continuar como As Variant)
  Dim Criterio As Variant
  Dim Contar As Variant  '(ou As Long)
  
  Set Intervalo = Range("A1:A14")
  Criterio = Range("C1").Value
  Contar = Application.CountIf(Intervalo, Criterio)
  'Ou também, diretamente na fórmula:
    Contar = Application.CountIf([A1:A14], [C1])
  'Vc também poderia fazer via Evaluate:
    Contar = [CountIf(A1:A14,C1)]
End Sub

 

 
Postado : 04/04/2022 11:04 am
(@leonardo)
Posts: 81
Trusted Member
Topic starter
 

Obrigado pela explicação @EdsonBR

 
Postado : 05/04/2022 8:23 pm