Página 1 de 1

Contando um algarismo em uma range

Enviado: 18 Set 2018 às 16:56
por Cleonir
Boa tarde,
Estou tentando fazer uma funcão do usuário em que eu passe uma range e um algarismo e ele me retorne as quantidades de incidências daquele algarismo.

A função está com o seguinte código :
Function Fr_contar_numeros(vintervalo As Range, vnumero)


Fr_contar_numeros = 0

For Each vcell In vintervalo

Fr_contar_numeros = Fr_contar_numeros + InStr(cell.Value, vnumero)

Next

End Function

Porém não está funcionando, poderiam avaliar, por favor .

Antecipadamente Grato.
Atenciosamente,
Cleonir Siqueira

Contando um algarismo em uma range

Enviado: 18 Set 2018 às 18:14
por gfranco
Não seria mais fácil um cont.se(intervalo;"*1*") por exemplo ? ( no caso de estar contanto as ocorrências do número 1) ?

Re: Contando um algarismo em uma range

Enviado: 18 Set 2018 às 19:52
por osvaldomp
Cleonir escreveu: Estou tentando fazer uma funcão do usuário em que eu passe uma range e um algarismo e ele me retorne as quantidades de incidências daquele algarismo.
Me parece treinamento em UDF ;)

A função está com o seguinte código :
Function Fr_contar_numeros(vintervalo As Range, vnumero) ~~~> coloque ponto e vírgula no lugar da vírgula


Fr_contar_numeros = 0 ~~~> este comando é desnecessário

For Each vcell In vintervalo ~~~> é recomendável sempre declarar as variáveis (vcell)

Fr_contar_numeros = Fr_contar_numeros + InStr(cell.Value, vnumero) ~~~>(rcell.Value, vnumero) ~~~> faltou o "r" na variável
Ainda, o comando InStr em InStr(cell.Value, vnumero) não se presta para a contagem que você quer fazer. Supondo que você queira contar a quantidade de vezes que o algarismo 3 aparece em 12543. Então InStr vai retornar 5 que é a posição do 3, e não 1, que é a quantidade de vezes que o 3 aparece.

Contando um algarismo em uma range

Enviado: 18 Set 2018 às 22:26
por ExcelFlex
Coloca a planilha aí pra gente poder ajudar.

Re: Contando um algarismo em uma range

Enviado: 20 Set 2018 às 09:09
por Cleonir
9211 6966 5676 156 465
3324 4504 4504 5342 3829
1741 5330 9969 579 6436
4405 1084 8540 6501 8302
6544 5438 9860 2972 9644
8196 9961 9731 7917 2512
7357 4144 7065 5081 6830

exemplo da planilha

Contando um algarismo em uma range

Enviado: 20 Set 2018 às 11:58
por ExcelFlex
Você pode usar como uma UDF diretamente na planilha com a seguinte fórmula:

=ContaCaracteresIntervalo(A1:E7;1)

E dentro de um módulo você coloca o código:
Código: Selecionar todos
Public Function ContaCaracteresIntervalo(rng As Range, strNum As String) As Long
  Dim cell As Variant
  For Each cell In rng
    ContaCaracteresIntervalo = ContaCaracteresIntervalo + contaCaract(cell.Value)
  Next cell
End Function

Private Function contaCaract(str As String) As Long
  Dim pos As Integer
  Do
    pos = pos + 1
    pos = InStr(pos, str, "1")
    If pos > 0 Then contaCaract = contaCaract + 1
  Loop While pos > 0
End Function

Re: Contando um algarismo em uma range

Enviado: 20 Set 2018 às 12:50
por Cleonir
Boa Tarde,

Obrigado, funcionou perfeitamente, apenas fiz um ajuste na na function, contacaract, para passar o parâmetro do número a ser contado, ficou assim :
Public Function ContaCaracteresIntervalo(rng As Range, StrNum As String) As Long
Dim cell As Variant
For Each cell In rng
ContaCaracteresIntervalo = ContaCaracteresIntervalo + contaCaract(cell.Value, StrNum)
Next cell
End Function

Private Function contaCaract(str As String, StrNum2 As String) As Long
Dim pos As Integer
Do
pos = pos + 1
pos = InStr(pos, str, StrNum2)
If pos > 0 Then contaCaract = contaCaract + 1
Loop While pos > 0
End Function

*****MUITO OBRIGADO******

Contando um algarismo em uma range

Enviado: 20 Set 2018 às 13:43
por ExcelFlex
É verdade, esqueci de passar a variável para a segunda function.
Se minha resposta ajudou, clique em Obrigado :D

Re: Contando um algarismo em uma range

Enviado: 20 Set 2018 às 15:57
por Cleonir
Boa tarde,

Não achei o botão de obrigado, fica aonde e como acesso ?

Att

Contando um algarismo em uma range

Enviado: 20 Set 2018 às 16:15
por ExcelFlex
Ao lado da resposta... :lol: :lol: