Última postagem

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

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

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})

[ ]

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...

Pesquisar este blog

Carregando...

Arquivo do blog