O conteúdo deste blog foi transferido para: https://usuariosdoexcel.wordpress.com/.
Lá você poderá ver além dos posts destes blog, as novas contribuições.
[ ]s
Dica de VBA - Eliminando valores em duplicidade
O código a seguir pode ser aplicado para eliminar valores duplicados de uma série de dados dispostos em uma coluna:
Sub EliminarDuplicidades()
Dim wf As WorksheetFunction
Dim rg As Range
Dim k As Integer
Dim Col As Variant
'Solicitar a informação sobre a coluna que será pesquisada
Col = Application.InputBox(Prompt:="Informe o número ou letra da coluna a ser pesquisada", _
Title:="eliminar dados duplicados em uma coluna", Type:=3)
'Atribuir o objeto Worksheetfunction à variável wf
Set wf = Application.WorksheetFunction
'Loop para percorrer as células da coluna indicada
'O loop se inicia na última célula preenchida da coluna em direção à célula da linha 1
For k = Cells(Rows.Count, Col).End(xlUp).Row To 1 Step -1
'Se houver mais repetições do valor na coluna selecionada, a linha correspondente é apagada
If wf.CountIf(Range(Cells(1, Col), Cells(Cells(Rows.Count, Col).End(xlUp).Row, Col)) _
, Cells(k, Col)) > 1 Then Rows(k).Delete
Next k
End Sub
[ ]s
Sub EliminarDuplicidades()
Dim wf As WorksheetFunction
Dim rg As Range
Dim k As Integer
Dim Col As Variant
'Solicitar a informação sobre a coluna que será pesquisada
Col = Application.InputBox(Prompt:="Informe o número ou letra da coluna a ser pesquisada", _
Title:="eliminar dados duplicados em uma coluna", Type:=3)
'Atribuir o objeto Worksheetfunction à variável wf
Set wf = Application.WorksheetFunction
'Loop para percorrer as células da coluna indicada
'O loop se inicia na última célula preenchida da coluna em direção à célula da linha 1
For k = Cells(Rows.Count, Col).End(xlUp).Row To 1 Step -1
'Se houver mais repetições do valor na coluna selecionada, a linha correspondente é apagada
If wf.CountIf(Range(Cells(1, Col), Cells(Cells(Rows.Count, Col).End(xlUp).Row, Col)) _
, Cells(k, Col)) > 1 Then Rows(k).Delete
Next k
End Sub
[ ]s
Explorando funções de texto - Parte 6
O Excel possui uma função que permite retornar o caminho completo de um arquivo salvo.
Para isto, podemos digitar em uma célula qualquer: =CÉL("filename";A1)
Mas se quisermos retornar apenas o nome da planilha, ou apenas a pasta na qual o arquivo está salvo?
Valendo-se das funções de texto já comentadas anteriormente, podemos apresentar as seguintes soluções:
Nome da planilha:
=DIREITA(CÉL("filename";A1);NÚM.CARACT(CÉL("filename";A1))-LOCALIZAR("]";CÉL("filename";A1)))
Localização do arquivo (pasta):
=ESQUERDA(CÉL("filename";A1);LOCALIZAR("[";CÉL("filename";A1))-1)
Para quem, como eu, já teve que manter atualizados documentos do sistema de qualidade, estas funções permitem que controlemos a localização dos arquivos de forma automática, tornando o seu acesso mais rápido e disponível para os interessados.
[ ]s
Para isto, podemos digitar em uma célula qualquer: =CÉL("filename";A1)
Mas se quisermos retornar apenas o nome da planilha, ou apenas a pasta na qual o arquivo está salvo?
Valendo-se das funções de texto já comentadas anteriormente, podemos apresentar as seguintes soluções:
Nome da planilha:
=DIREITA(CÉL("filename";A1);NÚM.CARACT(CÉL("filename";A1))-LOCALIZAR("]";CÉL("filename";A1)))
Localização do arquivo (pasta):
=ESQUERDA(CÉL("filename";A1);LOCALIZAR("[";CÉL("filename";A1))-1)
Para quem, como eu, já teve que manter atualizados documentos do sistema de qualidade, estas funções permitem que controlemos a localização dos arquivos de forma automática, tornando o seu acesso mais rápido e disponível para os interessados.
[ ]s
Explorando funções de texto - Parte 5
Depois da postagem anterior, quando utilizei uma UDF para retornar o primeiro nome e o último sobrenome, alguns amigos me perguntaram se seria possível realizar o mesmo utilizando funções nativas.
A resposta é sim.
Vejam abaixo como fica a fórmula matricial:
=ESQUERDA(A1;LOCALIZAR(" ";A1))&DIREITA(A1;NÚM.CARACT(A1)-MÁXIMO(SE(ÉERROS(LOCALIZAR(" ";A1;LIN(INDIRETO("A1:A"&NÚM.CARACT(A1)))));0;LOCALIZAR(" ";A1;LIN(INDIRETO("A1:A"&NÚM.CARACT(A1)))))))
PS: Para aqueles que não estão habituados a utilizar fórmulas matriciais, é necessário digitar CTRL+SHFT+ENTER após inserir a fórmula numa célula. O resultado final é exibido entre chaves ({Fórmula})
[ ]
A resposta é sim.
Vejam abaixo como fica a fórmula matricial:
=ESQUERDA(A1;LOCALIZAR(" ";A1))&DIREITA(A1;NÚM.CARACT(A1)-MÁXIMO(SE(ÉERROS(LOCALIZAR(" ";A1;LIN(INDIRETO("A1:A"&NÚM.CARACT(A1)))));0;LOCALIZAR(" ";A1;LIN(INDIRETO("A1:A"&NÚM.CARACT(A1)))))))
PS: Para aqueles que não estão habituados a utilizar fórmulas matriciais, é necessário digitar CTRL+SHFT+ENTER após inserir a fórmula numa célula. O resultado final é exibido entre chaves ({Fórmula})
[ ]
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...
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:
Postagens (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)