A veces, Excel insiste en convertir valores del tipo "0000" en un espantoso "0", que no nos sirve pues nos referimos a un código no a un valor. Eso también aplica en Excel que debe estar convencido de eso del cero a la izquierda, pues a veces, es imposible sustituir por ejemplo "0000", por "0001" pues ya sea por remplazo o por macros el "0000" lo convertirá en 1, ante un reemplazo.
Solución:
Regresamos a nuestra conocida base.
En la columna F, queremos sustituir los "0000" por "0001" y ocurre todo lo que hemos dicho. Por ejemplo, aquí se presenta el efecto de cambiar el dato con la opción de reemplazo:
Eso no es lo que queremos pues como dijimos "0000" y "0001" son códigos. Así que una macro sentará perfecto. Aquí está la macro, sólo que ahora le hemos puesto un bonito nombre:
Sub ComandanteMacro()
Dim Valor, NuevoValor As String
Selection.Copy
For N = 1 To 780
Valor = ActiveCell.Value
Select Case Valor
Case "0000"
ActiveSheet.Paste
Case Else
End Select
ActiveCell.Offset(1, 0).Range("A1").Select
Next
End Sub
Nuestra Sub Macro, ahora se llama sub comandanteMacro. Le hemos dimensionado las variables que no significa otra cosa que hemos reservado espacio nominado en memoria para nuestras variables. Visual Basic, que es el lenguaje que viene en Excel, aguanta no definir variables, pero esta vez nos hemos revelado.
Si bien Excel no nos permite reemplazar, si nos permite copiar un valor como el que queremos en otra celda y guardarlo sin transformarlo a valor. Por ello, lo primero que haremos será copiar en la celda F2, desde donde empezaremos la macro. Una valor como el que queremos, y queda así la cosa:
Ese valor lo hemos puesto copiando de la celda F5 el valor. Ahora si simularemos un copiado manual. regresemos a nuestra macro que es una la subrutina Sub ComandanteMacro(). Esta, para correrse, debe iniciarse en la celda donde comienza el problema, en la F1.
---------------------------------------------------------
Sub ComandanteMacro()
Dim Valor, NuevoValor As String 'se definen variables
Selection.Copy 'se copia la celda donde arranca el programa, que en este caso debe ser la F1
For N = 1 To 780 'inicia un largo proceso que durara 780 vueltas
Valor = ActiveCell.Value ' se extrae el valor de la primera celda
Select Case Valor ' se inicia una inspección case
Case "0000" 'si el caso es que la celda tiene valor "0000" que es el que queremos sustituir, se hace lo que sigue
ActiveSheet.Paste 'se pega el valor acumulado primero que es "0001" porque nosotros pusimos ese valor
Case Else
End Select
ActiveCell.Offset(1, 0).Range("A1").Select 'baja uno
Next 'repite
End Sub 'yastubo
-----------------------------------------------------
El resultado es este:
Que es lo que queríamos. Bueno ya saben amiguitos, cuando el Excel ande con eso del cero a la izquierda, a hacer macros.
No hay comentarios:
Publicar un comentario