Notifications
Clear all

Macro para Converter texto em numero e Centralizar colunas

4 Posts
3 Usuários
0 Reactions
1,586 Visualizações
(@tutoelizeu)
Posts: 0
New Member
Topic starter
 

Bom dia meus amigos,

Preciso de uma grande ajuda,

Tenho um banco de dados onde alimento diariamente. Os valores são extraídos do SAP, porém os números vem como texto e consequentemente gera erro com as formulas que utilizo.

Preciso criar uma macro que transforme as colunas onde os números estão como texto em números, para que eu possa eliminar esse erro automaticamente.
(No exemplo da planilha anexa, a coluna onde deve ser transformada em numero são as colunas "E", "H" e "O",
Além disso gostaria que a Macro já centralizasse todas as colunas,

Teria como me ajudar?

Obrigado.

 
Postado : 05/08/2016 7:25 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Elizeu, antes de testar a rotina abaixo, veja que em seu modelo nas colunas que citou temos Valores "texto" em algumas celulas e com certeza terá erro em suas formulas, de uma olhada antes nas celulas :
E3 - temos "Números('textos') já convertidos!"
H22 - "SUNNY PUTNEY"
são só alguma celulas, existem outras, então como disse isto irá causar erro nas formulas.

Coloque a rotina abaixo em um módulo e execute, faça um backup antes de testar.

Sub ConverteCentraliza()
    Dim eRng As Range
    Dim hRng As Range
    Dim oRng As Range
    Dim c
    Dim ultLin
    Dim ws As Worksheet

    Set ws = Worksheets("MB51")
    
    'Captamos a última linha na Coluna A
    ultLin = ws.Range("A" & Rows.Count).End(xlUp).Row
    
    'Definimos os Ranges até a ultima linha
    Set eRng = ws.Range("E2" & ":" & "E" & ultLin)
    Set hRng = ws.Range("H2" & ":" & "H" & ultLin)
    Set oRng = ws.Range("O2" & ":" & "O" & ultLin)
    
    Dim uRng As Range: Set uRng = Union(eRng, hRng, oRng)

    If uRng.Areas.Count > 1 Then
        
        For Each c In uRng
            'Converte para numericos
            On Error Resume Next
            c.Offset.Value = CDbl(c.Value)
            c.NumberFormat = "#,##0"
            
        Next
    
    Else
        MsgBox "Ranges vazios"
    End If
    
    'Centraliza as colunas
    ws.Range("E:E,H:H,O:O").HorizontalAlignment = xlCenter
    
End Sub

[]s

 
Postado : 05/08/2016 8:51 am
(@djunqueira)
Posts: 0
New Member
 

Na realidade se vc importar através de Nova Consulta no menu Dados vc consegue tudo isso q vc quer sem usar macro.

 
Postado : 05/08/2016 9:23 am
(@tutoelizeu)
Posts: 0
New Member
Topic starter
 

Obrigado Mauro!

Me ajudar demais!!!

Vou fazer como você me orientou!

Abraço

 
Postado : 05/08/2016 12:44 pm