Explorando funções de texto - Parte 4

Embora tenhamos tantas funções de texto nativas no Excel, na minha opinião ainda poderíamos ter, por exemplo:
1. Uma função para contar o número de ocorrências de uma cadeia de caracteres numa cadeia de texto;
2. Uma função para concatenar as células de um intervalo informado como argumento da função;
3. Uma função que retorna-se o primeiro nome e o último sobrenome de nomes de pessoas.

Bem, como o Excel não possui estas funções nativas, eis minhas sugestões de UDF (User Defined Function).

1. Função CONTCARACT
O que faz: Conta o número de ocorrências de uma seqüência de caracteres em uma cadeia de texto
Sintaxe:
CONTCARACT(Texto; Pesquisar;Tipo)
Texto: Texto no qual a cadeia será pesquisada;
Pesquisar: Cadeia a ser pesquisada;
Tipo: FALSO (ou omitido) >> não serão diferenciadas maiúsculas e minúsculas)
Código:

Function CONTCARACT(Texto As String, Pesquisar As String, Optional Tipo As Boolean)
Dim i As Integer
Application.Volatile
For i = 1 To Len(Texto)
    Select Case Tipo
    Case True
    If (Mid(Texto, i, Len(Pesquisar))) = (Pesquisar) Then CONTCARACT = CONTCARACT + 1
    Case Else
    If UCase(Mid(Texto, i, Len(Pesquisar))) = UCase(Pesquisar) Then CONTCARACT = CONTCARACT + 1
    End Select
Next i
End Function


2. Função CONCATENARINTERVALO
O que faz: Concatena todas as células de um intervalo contínuo informado.
Sintaxe: CONCATENARINTERVALO(Intervalo)
Código:

Function CONCATENARINTERVALO(Intervalo As Range)
Dim Célula As Range
Application.Volatile
For Each Célula In Intervalo
CONCATENARINTERVALO = CONCATENARINTERVALO & Célula
Next Célula
End Function


3. Função ENCURTARNOMES
O que faz: Exibe apenas o primeiro e o último nome de uma cadeia de texto cujos elementos são separados por espaços
Sintaxe: ENCURTARNOMES(Nome)
Código:

Function ENCURTARNOMES(Nome As String)
Dim PrimNome As String
Dim UltNome As String
Application.Volatile
PrimNome = Left(Nome, InStr(1, Nome, Space(1)) - 1)
UltNome = Right(Nome, Len(Nome) - InStrRev(Nome, Space(1), -1))
ENCURTARNOMES = PrimNome & Space(1) & UltNome
End Function


continua...

4 comentários:

ATM "Toguinha" disse...

Olá Adilson, como faço para copiar os dados de um célula para dentro de uma fórmula?
Ex que eu tenho:
Célula A9 c/ texto do seguinte intervalo "A4:A8"
Eu agora pretendo na célula A10 escrever a fórmula "=contar.se(A4:A8;"i")
Ou seja, precisava copiar o texto, exactamente como ele é "A4:A8" para dentro de outra fórmula e não consigo. Podia ajudar-me? Estou aflita...pois preciso fazer isso em mais de 40.000 linhas!!!! Senão substituía com um copy/paste o texto c/ o inetrvalo, se fossem poucas...assim... :(
Desde já agradeço a atenção!

Atentamente,
Andreia Toga
andreia.toga@mail.com

ATM "Toguinha" disse...

Boa tarde,

Podia ajudar-me a utilizar os texto de uma célula no meio de uma fórmula noutra célula?
Passo a explicar:
Na célula A9 tenho o seguinte texto: "A4:A8" (que corresponde a um intervalo)
Na célula B9 eu pretendo aplicar a fórmula "=contar.se(A4:A8;"i")".
Contudo, não consigo ir buscar o texto a A9 e reproduzi-lo em B9 (só assim me contaria o n.º de "i" que eu tenho de A4 a A8!

Eu poderia fazer um copy/paste do intervalo e colocá-lo no meio da fórmula se apenas tivesse de fazer essa alteração em algumas células.
A questão é que tenho de o fazer para 40.000 linhas! E fazer uma a uma nunca mais termino meu trabalho!
Estava à procura de ajuda e encontrei-o! Pode ajudar-me?

Desde já agradeço a sua atenção!
Atentamente,

Andreia Toga
andreia.toga@gmail.com

adilsonsoledade disse...

Andreia,
Experimente a fórmula: =CONT.SE(INDIRETO(A9);"i")
[ ]S

ATM "Toguinha" disse...

Funcionou Adilson! Muito, muito obrigada! Cumprimentos,
Andreia Toga

Pesquisar este blog

Carregando...

Arquivo do blog