Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Por Cleonir
#36878
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
Avatar do usuário
Por gfranco
Avatar
#36881
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) ?
Por osvaldomp
#36883
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.
Editado pela última vez por osvaldomp em 18 Set 2018 às 23:14, em um total de 1 vez.
Por Cleonir
#36931
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
Avatar do usuário
Por ExcelFlex
Posts Avatar
#36933
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
Por Cleonir
#36937
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******
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord