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...
Assinar:
Postar comentários (Atom)
Arquivo do blog
-
▼
2010
(18)
-
▼
Setembro
(8)
- Explorando funções de texto - Parte 6
- Explorando funções de texto - Parte 5
- Explorando funções de texto - Parte 4
- Explorando funções de texto - Parte 3
- Explorando funções de texto - Parte 2
- Explorando funções de texto - Parte 1
- Utilizando eventos do Excel - Parte 3
- Utilizando eventos do Excel - Parte 2
-
▼
Setembro
(8)
-
►
2009
(16)
-
►
Novembro
(10)
- Criando fórmulas que verifiquem múltiplas condiçõe...
- Identificando o caminho e o nome do arquivo
- Função para contar ocorrências de uma palavra num ...
- Tabela Dinâmica com Intervalo Dinâmico
- Gráficos x Intervalos Dinâmicos - Exemplo 2
- Gráficos x Intervalos Dinâmicos - Exemplo 1
- Criando intervalos dinâmicos
- Ordenação automática de um intervalo de células
- Calculando o dígito verificador (módulo 11)
- Somas e contagens condicionais
-
►
Novembro
(10)
4 comentários:
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
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
Andreia,
Experimente a fórmula: =CONT.SE(INDIRETO(A9);"i")
[ ]S
Funcionou Adilson! Muito, muito obrigada! Cumprimentos,
Andreia Toga
Postar um comentário