Macro extraer-dejar nº misma columna desde distintos formatos.

Hola expertos y gracias de antemano.

Siento molestaros de nuevo pero no sé realizar una macro que me adapte todas las situaciones.

La verdad no tengo ni idea de como hacerlo. Os envío un pequeño Excel por si os dignáis a ofrecerme vuestra inestimable ayuda.

Me envían una hoja en la que tengo que hacer varias modificaciones. Una de las columnas, afectada por estas modificaciones y que hasta ahora ha venido correcta con nº enteros: 1,11,2,12,...... , ahora viene en formatos varios.....¡olé!: 1-11(tengo que dejar el primer nº); 1-ene (tengo que dejar el 1); a22 (tengo que dejar el 22).... De forma independiente he conseguido controlar?????? "de aquella manera" los casos 1-11 y a22 pero con el que tiene formato de fecha; 1-ene estoy completamente atascada. ¿como hago para dejar sólo el número, que se correspondería con el día?

Saludos y gracias de nuevo,

1 Respuesta

Respuesta
1

Si estas usando Macros, al referirte a una celda puedes usar varias propiedades

Celda.Text te mostrará exactamente lo que VES en ese momento en la celda... podrías ver los ##### si el ancho de la columna no es suficiente.

Celda. Value2 el valor verdadero en la celda

Celda.Value similar al anterior pero también reconoce formato de moneda..

Puedes usar esta propiedad para "atrapar" el valor de la celda y hacer que se adapte a lo que tienes...

La pregunta es, que cosa hay en la celda donde tu ves "1-¿ene"?...

¿Hay un texto de 5 letras o hay una fecha con formato?...

En el primer caso... es un caso de texto... en el segundo sabes que realmente hay un numero de serie muy grrande y 1-ene podría ser 41640 por ejemplo para el primero de enero del 2014... en cuyo caso debes usar la propiedad Text para capturar el texto "1-ene" y asi es fácil extraer el texto antes del "-"..

Discúlpame, por favor, pero no entiendo muy bien lo que me dices.

En la celda donde veo 31-ene hay en la barra de fórmulas la fecha: 31/01/2014 y en formato "personalizado "dd-mmm"

Las celdas con números reales y válidos tienen formato "General"(éste es el formato que deberían de tener todas las celdas)

La macro que he creado para cambiar el 31-ene y me deje sólo el 31 es:

Lo siento. He ido a copiar la macro y ha saltado la pregunta

Apunto la macro

Dim rCelda as range

Range("N1").Select
Range(Selection, Selection.End(xlDown)).Select
For Each rCelda In Selection
rCelda.NumberFormat = "dd"

Esta macro me deja solo el nº 31, bien eso es lo que quiero pero me cambia el resto de los nº al mismo formato de fecha. Además, como bien dices, es lo veo. y no quiero eso.

En un intento de que solo me ponga "dd" en ese caso estoy intentando incluir un if:

If rCelda.NumberFormat = "d-mmm" Then

pero claramente no vale para nada y no sé como se puede hacer..

Ya he probado también cambiarle la propiedad Text y como bien dices me saca ese nº 41640 y todavía peor.....

Siempre se puede hacer a mano.........

Si la celda tiene como valor la fecha completa y se ve como tu dices sólo debido al formato entonces basta con Que le apliques la función dia (day) a la celda y va a convertir el dato en un simple número.

Probablemente quede el formato residual y entonces debes también aplicarle formato general. .. Con eso es suficiente. ..

Me cuentas como resulta

Gracias por vuestra atención. Por algún motivo, por error mío seguramente, falta un mensaje que creía había enviado. Yo estaba esperando una respuesta.

De todas maneras, la macro originaria que creé funcionaba correctamente. Un tonto error que cometí en su elaboración creaba el error y mi terror a las fechas motivó esta pregunta. Elaboré la macro de nuevo y funciona a la perfección. Añado la macro por si a alguien le viene bien:

Sub ExtraeNumeros()
Dim rCelda As Range
Application.ScreenUpdating = False
Worksheets("Nombredelahoja").Select
Range("N2", Range("N65000").End(xlUp)).Select
For Each rCelda In Selection
rCelda.Value = Left(rCelda, 2)
rCelda.NumberFormat = "General"
Next rCelda
Application.ScreenUpdating = True
End Sub

Mi más sincera gratitud,

Un saludo,

Karmele,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas