Logo Hardware.com.br
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas

Duvidas Apagar Conteudo VBA - Macro - Excel

#1 Por NayraJH 14/04/2016 - 14:11
Boa tarde,
Será que alguém poderia me dá uma ajuda por favor?

Eu tenho uma planilha que vai da coluna A à M.
Na coluna A aparecem alguns números. Ex:

A
602449
701167
F000297
FX00266
L800012
MX00067
O que eu gostaria é que quando aparecem na coluna A itens iniciados com F, L e M fosse automaticamente limpado o conteudo das mesmas na coluna K.
Eu não gostaria que fosse excluido a linha não, mas sim que só fosse limpado o conteúdo da coluna K.
Os outros itens como o 302449 o que surgir na coluna K permanece.
Obs: Essa planilha é gerada todos os dias, e em seguida atualizada. Ou seja, hoje o F pode aparecer na A1 por exemplo mas amanhã pode aparecer na B1. Por isso eu preciso que seje localizado para depois ser limpo o conteudo.
Estou enviando a imagem da planilhar em anexo.
Deu pra entender o que preciso?

Alguém poderia me ajudar por favor?

Anexos

Responder
osvaldomp
osvaldomp Geek Registrado
753 Mensagens 558 Curtidas
#2 Por osvaldomp
14/04/2016 - 21:10
Olá, Nayra.
Experimente o código abaixo. Se não retornar o resultado esperado sugiro que você disponibilize uma amostra do seu arquivo, com o código instalado, com 10 a 15 linhas de dados, contendo todas as variações possíveis. Imagens da planilha não servem.
Sub LimpaK()
Dim LR As Long, c As Range
LR = Cells(Rows.Count, 1).End(3).Row
For Each c In Range("A1:A" & LR)
Select Case Left(c, 1)
Case "F", "L", "M"
c.Offset(, 10) = ""
End Select
Next c
End Sub
Osvaldo
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#3 Por NayraJH
14/04/2016 - 21:30
NayraJH disse:
Boa tarde,
Será que alguém poderia me dá uma ajuda por favor?

Eu tenho uma planilha que vai da coluna A à M.
Na coluna A aparecem alguns números. Ex:

A
602449
701167
F000297
FX00266
L800012
MX00067
O que eu gostaria é que quando aparecem na coluna A itens iniciados com F, L e M fosse automaticamente limpado o conteudo das mesmas na coluna K.
Eu não gostaria que fosse excluido a linha não, mas sim que só fosse limpado o conteúdo da coluna K.
Os outros itens como o 302449 o que surgir na coluna K permanece.
Obs: Essa planilha é gerada todos os dias, e em seguida atualizada. Ou seja, hoje o F pode aparecer na A1 por exemplo mas amanhã pode aparecer na B1. Por isso eu preciso que seje localizado para depois ser limpo o conteudo.
Estou enviando a imagem da planilhar em anexo.
Deu pra entender o que preciso?

Alguém poderia me ajudar por favor?
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#4 Por NayraJH
14/04/2016 - 21:52
Boa noite,

Nossa deu certinho! Não sei como agradecer... Estou começando a aprender agora e me deparei com essa situação e mais alguma.

Se nao for pedir demais e ja pedindo...se vc puder me ajudar mais nisso...

1) Gostaria que na coluna M (Buyer) se aparecer #N/D esse conteúdo dessa linha (Ex linha 2) na coluna (M) seja apagado e fique vazio (a linha não pode ser deletada), de #N/D passaria para vazio. Caso apareça uma outra palavra como CASA por exemplo o conteúdo permanece o mesmo, ou seja na coluna M continuará escrito CASA.
2)Toda vez que na coluna K aparecer o número 199910 as linhas sejam excluídas.
3)Toda vez apagar ou excluir a ultima linha que sempre se chamará Total Geral e as linhas abaixo dela também.

Mto obrigada!

Anexos

osvaldomp
osvaldomp Geek Registrado
753 Mensagens 558 Curtidas
#5 Por osvaldomp
15/04/2016 - 11:49
NayraJH disse:


1) Gostaria que na coluna M (Buyer) se aparecer #N/D esse conteúdo dessa linha (Ex linha 2) na coluna (M) seja apagado e fique vazio (a linha não pode ser deletada), de #N/D passaria para vazio. Caso apareça uma outra palavra como CASA por exemplo o conteúdo permanece o mesmo, ou seja na coluna M continuará escrito CASA.
2)Toda vez que na coluna K aparecer o número 199910 as linhas sejam excluídas.
3)Toda vez apagar ou excluir a ultima linha que sempre se chamará Total Geral e as linhas abaixo dela também.


Experimente
Sub ExcLinLimpaCél()
Dim k As Long, c As Long, LR As Long, TG As Long
LR = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
Application.ScreenUpdating = False
With ActiveSheet
TG = .Cells(Rows.Count, 1).End(3).Row
.Range(.Cells(TG, 1), .Cells(LR, 13)) = ""
On Error GoTo errH
.Range("A1:M" & TG - 1).AutoFilter Field:=13, Criteria1:="#N/D"
.Range("M2:M" & TG - 1).SpecialCells(xlCellTypeVisible).Value = ""
.Range("A1:M" & TG - 1).AutoFilter
.Range("A1:M" & TG - 1).AutoFilter Field:=11, Criteria1:=199910
.Range("A2:M" & TG - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
errH:
.Range("A1:M" & TG - 1).AutoFilter
End With
Application.ScreenUpdating = True
End Sub


obs. - antes de rodar o código acima
1. remova o espaço que está no início do número 199910 na célula K10
2. remova o conteúdo das células E483:M485
3. na linha 11753 há sujeira invisível >> selecione a linha 22 / tecle End + setinha para baixo / clique com o direito em qualquer parte da seleção / Excluir (isto vai limpar a sua planilha)
Osvaldo
NayraJH
NayraJH Membro Senior Registrado
141 Mensagens 7 Curtidas
#6 Por NayraJH
15/04/2016 - 13:27
Boa tarde,

Colocando a macro em uma planilha vazia somente com essas duas macr0s funcionou, mas quando fui colocar na planilha que eu uso infelizmente não deu certo.
Ficou muito pesado, nem consegui testar...tentei de todos os melhores computadores que tenho no local e infelizmente demora a atualizar demais chegando a travar. Acredito que minha planilha já tenha bastante macro e como estou aprendendo devo estar fazendo de uma maneira em que fique muito pesado para ser executado.

Sabe o que posso fazer?
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal