Macro da formato de texto a números

Quisiera plantear lo siguiente:

Grabe una macro con el asistente de Excel, ya que no se programar. La Macro hace lo que le pido excepto por una cosa:que los valores numéricos de una columna especifica los pasa al rango de destino con formato de texto, al tenerlos allí tengo que hacer el proceso manual de convertirlos a numero. Agradezco su valiosa colaboración, la macro es:

Sub Macro01()
'
' Macro01 Macro
'

'
Columns("A:E").Select
ActiveWorkbook.Worksheets("Macro 01").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Macro 01").Sort.SortFields.Add Key:=Range( _
"A1:A500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Macro 01").Sort
.SetRange Range("A1:E500")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Columns("C:E").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Range("C1").Select
ActiveCell.FormulaR1C1 = "=RC[3]/RC[1]"
Range("C1").Select
Selection.Copy
Range("C2:C100").Select
ActiveSheet.Paste
Range("E1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
Range("E1").Select
Selection.Copy
Range("E2:E100").Select
ActiveSheet.Paste
Range("A1:E100").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Transacciones").Select
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 1
ActiveWindow.SmallScroll Down:=-21
Range("A26").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

2 respuestas

Respuesta
1

Prueba con esta macro, es más corta

Sub macro1()
Set datos = Worksheets("macro 01").Range("a1").CurrentRegion
Set trans = Worksheets("transacciones").Range("a26")
With datos
    f = .Rows.Count: c = .Columns.Count
    .Sort key1:=datos.Range(.Columns(1).Address), order1:=xlAscending
    .Columns(3).Resize(f, c - 2).Replace What:=".", Replacement:=","
    .Columns(3).EntireColumn.Insert
    .Columns(3).Formula = "=f1/d1"
    .Columns(5).Formula = "=c1*d1"
    .Resize(f, c). Copy: trans. PasteSpecial xlValues
 trans. CurrentRegion.NumberFormat = "0.00"
End With
Set datos = Nothing: Set trans = Nothing
End Sub
Respuesta
-1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas