Notifications
Clear all

Copiar convertendo os zeros para xis

11 Posts
3 Usuários
0 Reactions
2,419 Visualizações
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Boa tarde

O que precisa nessa macro para converter valores zeros em xis

Sub copy_zero_xis
Range ("AQ2:AQ14") . Copy ' aqui os valores são zeros
Sheets ("BDados") .Select

Range ("AN130") . PasteSpecial Paste:=xlPasteValues ' aqui já chegam convertidos em xis
Range("F22") . Select
Sheets ("Padrões") . Select
Range ("F1") . Select
Selection. ClearContents
End Sub

Grato :D

 
Postado : 30/12/2014 3:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Eu não entendi, oque você quer!

Sub aleVBA_13992()
    For Each c In ActiveSheet.UsedRange
        If c.Value = 0 Then c.Value = "x"
    Next c
End Sub
 
Postado : 30/12/2014 5:49 pm
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Meu caro alex, é quase isso. Em ("AQ2:AQ14") existem apenas zeros em determinadas posições. A macro precisa pegar esses valores (0), converter para xis e copiar para ("AN130"), obedecendo as mesmas posições em que estavam ("AQ2:AQ14"). Resumindo: É apenas para copiar os zeros (só os valores) de um intervalo para outro mas substituindo o zero pelo xis. :D

 
Postado : 30/12/2014 6:44 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Considerando que em Aq1 tem um cabeçalho.

Sub aleVBA_13992V2()
     
    Dim lastrow As Long: lastrow = Cells(Rows.Count, "AQ").End(xlUp).Row
     
    Application.ScreenUpdating = False
     
    With ActiveSheet
        .AutoFilterMode = False
        .Range("AQ1").AutoFilter field:=1, Criteria1:="=0"
        .Range("AQ1:AQ" & lastrow).SpecialCells(xlCellTypeVisible).Copy .Range("AN130")
        .AutoFilterMode = False
    End With
     
    Application.ScreenUpdating = True

End Sub
 
Postado : 30/12/2014 7:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

BOa noite!!

Ou tente assim

Sub aleVBA_13992V3()
   Dim lr As Long, i As Long
lr = Cells(Rows.Count, "AN").End(xlUp).Row

    With Worksheets("Sheet1")
        .Range("AQ2:AQ14").Copy
        .Range("AN130").PasteSpecial Paste:=xlPasteValues
    End With

    For i = 130 To lr
        If UCase(Cells(i, "AN")) <> 0 Then Cells(i, "AN").ClearContents
    Next i

End Sub
 
Postado : 30/12/2014 7:24 pm
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Bom dia
Alexandrevba, essa macro faz o que preciso, mas apenas com uma coluna e precisava fazer com o intervalo completo. Se puderes corrigir... agradeço. :D

 
Postado : 31/12/2014 4:46 am
(@sandroh)
Posts: 0
New Member
 

Cara, porque você não usa uma fórmula ao invés de macro? é bem mais simples =SE(AN1=0;"X";"")

 
Postado : 31/12/2014 5:19 am
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Sandroh, essa plan é apenas exemplo. O uso real deve ser feito com macro, devido a outras implementações.

 
Postado : 31/12/2014 5:35 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Veja se ajuda.

Sub aleVBA_13992V4()
Dim cell As Range
Application.ScreenUpdating = 0
    With Worksheets("1")
        .Range("AQ2:AW14").Copy
        .Range("BD2").PasteSpecial Paste:=xlPasteValues
    End With
    
    With ActiveSheet
    For Each cell In .Range("BD2:BJ14")
        If cell.Value <> 0 Then
            cell.ClearContents
        End If
    Next
End With
Sheets(1).Range("BD2:BJ14").Replace "0", "x"
Application.ScreenUpdating = 1
End Sub
 
Postado : 31/12/2014 9:29 am
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Boa, alex. bem na muleira. :lol:

 
Postado : 31/12/2014 9:55 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu fico feliz em ajudar, ,obrigado pelo retorno!!

Att

 
Postado : 31/12/2014 10:02 am