Página 1 de 1

Copiar valor de uma célula para as demais linhas filtradas

Enviado: 05 Mar 2020 às 12:25
por FelipeCap
Olá,

Em determinada coluna da planilha eu filtro os valores diferentes de vazio(="<>"), e preciso substituir os valores por 1(para fazer a contagem), porém quando eu crio uma variável para pegar somente as linhas filtradas, ele acaba pegando uma linha oculta e trazendo erroneamente o valor dela para as demais linhas. Conseguem me ajudar?
Anexo o arquivo exemplificado e abaixo o trecho da macro.

Muito obrigado

Sub simulador_venda()

linhacf = Range("E1").End(xlDown).End(xlUp).SpecialCells(xlCellTypeVisible).Row + 1


'RECICLAVEL
ActiveSheet.Range("$A:$H").AutoFilter Field:=5, Criteria1:="<>"
Cells(linhacf, 5).Select
Range("E1").Select
Selection.End(xlDown).Select
Selection.End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "1"
Range(Selection, Selection.End(xlDown)).Select
Selection.FillDown
Selection.AutoFilter


'DESCARTAVEL
Range("F1").Select
ActiveSheet.Range("$A:$H").AutoFilter Field:=6, Criteria1:="<>"
Range("F1").Select
Range(ActiveCell.End(xlDown), ActiveCell.End(xlUp).Offset(1, 0)).Select
Selection.End(xlDown).Select
Selection.End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "1"
Range(Selection, Selection.End(xlDown)).Select
Selection.FillDown
Selection.AutoFilter


'NOVO
Range("G1").Select
ActiveSheet.Range("$A:$H").AutoFilter Field:=7, Criteria1:="<>"
Range("P1").Select
Range(ActiveCell.End(xlDown), ActiveCell.End(xlUp).Offset(1, 0)).Select
Selection.End(xlDown).Select
Selection.End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "1"
Range(Selection, Selection.End(xlDown)).Select
Selection.FillDown
Selection.AutoFilter


End Sub

Re: Copiar valor de uma célula para as demais linhas filtrad

Enviado: 05 Mar 2020 às 15:11
por osvaldomp
FelipeCap escreveu: ... e preciso substituir os valores por 1(para fazer a contagem)...
Deixando o seu código de lado, explique o que exatamente você quer contar e onde ?

Re: Copiar valor de uma célula para as demais linhas filtrad

Enviado: 05 Mar 2020 às 17:56
por FelipeCap
Osvaldo, boa tarde.

Sendo bem objetivo: Eu só preciso filtrar nas colunas( em azul) todas as linhas "diferentes de vazio" e substituir os campos que estão preenchidos por "1" sem que preencha as linhas vazias.
Referente a "contagem" não precisa ser feita na macro, isso já é realizado direto no BI quando eu subo a base do Excel.

Isso esclarece?

Obrigado

Re: Copiar valor de uma célula para as demais linhas filtrad

Enviado: 05 Mar 2020 às 23:30
por osvaldomp
FelipeCap escreveu:... substituir os campos que estão preenchidos por "1"
Experimente: (o código colocará 1 e não "1")
Código: Selecionar todos
Sub SubstituiPorUm()
 Dim LR As Long, k As Long
  LR = Cells(Rows.Count, 1).End(3).Row
   For k = 5 To 7
    Columns(k).TextToColumns
    Range(Cells(2, k), Cells(LR, k)).SpecialCells(2) = 1
   Next k
End Sub
obs. embora o código funcione no módulo da planilha, onde você colocou o código atual, é recomendável instalar o código acima em um módulo comum (no menu do editor de VBA / Inserir / Módulo)