Página 1 de 1

Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 14 Jun 2021 às 22:17
por JacoStein
Pessoal,
Preciso exibir na coluna B a quantidade de ocorrências que a palavra da Coluna A aparece.

Como faço para a macro inserir automaticamente esse número?

...se ajudar, esse foi uma macro que achei, mas pela minha limitaçã o no vba, não consegui adaptar. :(
'=============================
Dim Count As Integer
Dim Target As String
Dim Cell As Object
Dim N As Integer

Sub Contagem_Palavras()

'ADAPTADO DE:
'https://docs.microsoft.com/pt-br/previo ... s-in-excel

Count = 0
Target = InputBox("Que palavra buscar?")
If Target = "" Then GoTo Done
For Each Cell In Selection
N = InStr(1, Cell.Value, Target)
While N <> 0
Count = Count + 1
N = InStr(N + 1, Cell.Value, Target)
Wend
Next Cell
MsgBox Count & " Ocorrências de " & Target
Done:

End Sub
'=================================

Agradeço qualquer ajuda. :)
Imagem

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 08:24
por osvaldomp
Código: Selecionar todos
Sub ContaTextos()
 Dim r As Range, c As Range
  Set r = Range("A2:A" & Cells(Rows.Count, 1).End(3).Row)
  For Each c In r
   c.Offset(, 1).Value = Application.CountIf(r, c)
  Next c
End Sub

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 08:40
por JacoStein
@osvaldomp Muito agradecido amigo, Deus te ilumine e abençoe com muito mais conhecimento!

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 08:48
por osvaldomp
Olá, @JacoStein .

Que bom que ajudou. :)

God bless you too!

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 08:50
por JacoStein
@osvaldomp , amigo Osvaldo, aproveitando, por exemplo, como poderia ser o código,
se porventura vc quisesse saber quantas vezes a palavra X da Coluna A aparece na listagem da Coluna C ?

Imagem

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 09:07
por osvaldomp
JacoStein escreveu: 15 Jun 2021 às 08:50 ... aparece na listagem da Coluna C ?
Considerei coluna D, conforme aparece na imagem que você postou.
Código: Selecionar todos
Sub ContaTextosV2()
 Dim c As Range, d As Range
  Set d = Range("D2:D" & Cells(Rows.Count, 4).End(3).Row)
  For Each c In Range("A2:A" & Cells(Rows.Count, 1).End(3).Row)
   c.Offset(, 1).Value = Application.CountIf(d, "*" & c & "*")
  Next c
End Sub

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 09:38
por JacoStein
muito bom @osvaldomp ! era isso mesmo! mto obrigado!!

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 10:06
por osvaldomp
Olá, @JacoStein .

Complementando, nos seus exemplos a palavra a ser contada aparece sempre no final do texto, no entanto, o código que passei conta a palavra situada em qualquer parte do texto.

Exemplos, o código irá contar verde nos textos abaixo:
ela usa verde
ela usa verde sempre
verde é uma cor, outra cor é o azul ~~~> aqui conta também o azul

Se você quiser contar somente no final do texto, exemplo, neste texto ~~~> verde é uma cor, outra cor é o azul ~~~> para contar contar o azul e não contar o verde, então remova o asterisco do final do CountIf(), ficaria assim ~~~> CountIf(d, "*" & c))

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 17:44
por JacoStein
Bacana mesmo, excelente!
@osvaldomp
Aproveitando, desculpe a ignorância, estou tentando esse código, para validar se na Celula A1 tem o texto "OK", se tiver gera a msgbox.
Pelo que ví, ele só valida quando tem números na célula, e não quando coloco texto, como eu poderia corrigi-lo?

Sub ValidaCampo12()

Dim vMyVal

vMyVal = Range("A1").Value

If vMyVal = OK Then

MsgBox "é igual a OK!"

Else

MsgBox "Não está OK!"
End If

End Sub

Re: Exibir quantidade de ocorrências de uma palavra em uma seleção

Enviado: 15 Jun 2021 às 18:01
por osvaldomp
Se você quer verificar se o conteúdo de A1 é OK (ambas maiúsculas) basta colocar o OK entre aspas no código ~~~> If vMyVal = "OK" Then

ou
Código: Selecionar todos
Sub VerificaA1()
 If [A1] = "OK" Then
  MsgBox "A1 é igual a OK"
 Else: MsgBox "A1 é diferente de OK"
 End If
End Sub