Realización de macro para excel.

Siento realizar esta pregunta/petición..

Por motivos laborales, necesitaría automatizar un trabajo en Excel, se trata de dar cierto formato a las celdas de un rango concreto Ejmp. B4:B50, de forma que se eliminen los espacios que estén al comienzo y fin de cada celda, se alinee el contenido a la derecha y se elimine el ultimo carácter. Tras esto quedaría algo del estilo a hssk ksisj 28929 (los caracteres y longitud pueden variar), en este caso solo me interesa que quede aquello que va tras el segundo espacio, el resto tendría que eliminarse. Bien una vez obtenido el resultado ese numero debería dividirse entre 1000. Todo ello realizarlo en cada celda del rango (sin usar otras), el problema es que no tengo ni idea de Macros.

Respuesta
2

No me queda claro que es lo quieres exactamente haga la macro aun así te anexo este ejemplo

Sub analizar_datos()
Set datos = Range("a1").CurrentRegion
With datos
    f = .Rows.Count
    For i = 1 To f
        celda = Trim(.Cells(i, 1))
        separa = Split(celda, " ")
        largo = Len(separa(2))
        valor = Val(Left(separa(2), largo - 1))
        .Cells(i, 1) = valor / 1000
    Next i
    .HorizontalAlignment = xlRight
End With
set datos=nothing
End Sub

1 respuesta más de otro experto

Respuesta
2

Adjunto código en vba, según tu requerimiento.

Sub MacroFormateo()
Dim Dato() As String
Dim vector() As String
Dim Celda As String
Dim Rango As Range
Set Rango = Range(Range("B4"), Range("B4").End(xlDown))
ReDim vector(Rango.Count - 1)
For i = 0 To Rango.Count - 1
    Celda = WorksheetFunction.Trim(Rango.Cells(i + 1, 1))
    vector(i) = Left(Celda, Len(Celda) - 1)
    Dato = Split(vector(i), " ")
    Rango.Cells(i + 1, 1) = Dato(UBound(Dato)) / 1000
Next i
With Rango
    .HorizontalAlignment = xlRight
    .VerticalAlignment = xlCenter
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas