Macro

Hola t4373125:
Verás, tengo una hoja de excel, donde quisiera generar una macro que hiciese lo siguiente.
Antes de nada, te cuento lo que tengo.
Dispongo de una celda donde se me muestra el nº de pedido y está conformada de tres letras (Wan) y una numeración.
Hay otros pedidos que pueden corresponder a devoluciones o retrasos, en cuyo caso tendrán la misma numeración que la anterior, pero acabado en R (retraso), y DE (devoluciones).
Así pues pueden aparecer por ejemplo nº de pedidos de esta forma
WAN12332 (Envío normal)
WAN12332D (Devolución).
Quisiera hacer una macro, que me recorriese toda esa columna con los números de pedido, y que me genere otras dos columnas, donde en una se me muestre el nº de pedido y en la otra el valor de esta letra (si es que la hay).
Por ejemplo
WAN1233D me debería de generar dos columnas que me indiquen
1º WAN1233
2º DE (devolución)
Y si el nº de pedido no tiene ni una R ni una DE, que me lo muestre tal cual
WAN1234
1ºWAN1234
2º0 (pedido normal)
Espero que puedas ayudarme. Desde ya te doy las gracias por tu tiempo.
Un saludo.

1 Respuesta

Respuesta
1
Prueba este código y modifícalo a tu gusto:
Sub macro()
'ir a la casilla de inicio
Range("A1"). Select 'borrar esta linea si se quiere empezar por la celda seleccionada en este momento
'mientras haya celdas...
While ActiveCell.Text <> ""
'caso que sea una devolución
If Right(ActiveCell.Text, 1) = "D" Then
'copiar el codigo a la derecha
ActiveCell.Offset(0, 1).Value = Mid(ActiveCell.Text, 1, Len(ActiveCell.Text) - 1)
'escribir la anomalia
ActiveCell.Offset(0, 2).Value = "D (devolucion)"
'caso que sea un retraso
ElseIf Right(ActiveCell.Text, 1) = "R" Then
'copiar el codigo a la derecha
ActiveCell.Offset(0, 1).Value = Mid(ActiveCell.Text, 1, Len(ActiveCell.Text) - 1)
'escribir la anomalia
ActiveCell.Offset(0, 2).Value = "R (retraso)"
'caso que sea un pedido normal
Else
'copiar el codigo a la derecha
ActiveCell.Offset(0, 1).Value = ActiveCell.Text
'escribir la anomalia
ActiveCell.Offset(0, 2).Value = "0 (pedido normal)"
End If
'ir a la siguiente fila
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Si algo no entiendes no dudes en preguntarme
Eres un figura. Me quito el sombrero, si señor.
Tras algunas modificaciones de cambio de columnas para no "romper" el formato original, la macro funciona a las mil maravillas.
Una pregunta eficaz, rápida y GRANDIOSA!.
Lastima que solo se pueda votar con un 5 de máximo.
Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas