Supongamos que tiene una hoja de trabajo con muchos códigos de producto en la columna A.

Estos códigos están en formato A4, B12, AD4, etc. Debido a un cambio en la forma en que opera su empresa, se le indica que cambie todos los códigos de producto para que contengan un guión entre las letras y los números.

Hay varias formas de realizar esta tarea. Si la estructura de los códigos de sus productos es coherente, insertar los guiones es muy sencillo.

Por ejemplo, si siempre habrá una sola letra seguida de números, entonces podría usar una fórmula como esta:

=LEFT(A1,1) & "-" & RIGHT(A1,LEN(A1)-1)

Es muy probable que sus datos no estén estructurados, lo que significa que podría tener una o dos letras seguidas de hasta tres dígitos. Por tanto, tanto A4 como QD284 serían códigos de producto válidos. En este caso, una fórmula de solución requiere un poco más de creatividad.

Una forma de manejarlo es con una fórmula de matriz. Considere la siguiente fórmula:

=REPLACE(A1,MATCH(FALSE,ISERROR(1*MID(A1,ROW(INDIRECT("1:100")),1)),0),0,"-")

Si los valores están en A1-A10, puede poner esta fórmula en B1 y luego copiarla en la columna. Dado que es una fórmula de matriz, debe ingresarse presionando Ctrl + Shift + Enter. La fórmula busca la ubicación del primer número en la celda e inserta un guión antes.

Suponga, por ejemplo, que la celda A1 contiene BR27. La parte más interna de la fórmula, INDIRECTO («1: 100»), convierte el texto 1: 100 en un rango. Esto se usa para que insertar o eliminar filas no afecte a la fórmula. La siguiente parte de la fórmula, FILA (INDIRECTO («1: 100»)), esencialmente crea una matriz de los valores 1-100: 1,2,3, …​, 99,100. Se utiliza para actuar sobre cada personaje de la celda.

La siguiente parte, MID (A1, ROW (INDIRECT («1: 100»)), 1), se refiere a cada carácter individual de la cadena. Esto da como resultado la matriz: «B», «R», «2» y «7». Multiplicar la matriz por 1 (la siguiente parte de la fórmula)

da como resultado que cada uno de los caracteres individuales se convierta en un número. Si el carácter no es un número, esta conversión produce un error. En el caso de que la cadena se convierta (BR27), esto da como resultado: #VALOR, #VALOR, 2 y 7.

El siguiente paso es aplicar la función ISERROR a los resultados de la multiplicación. Esto convierte los errores en VERDADERO y los no errores en FALSO, dando como resultado VERDADERO, VERDADERO, FALSO y FALSO. La función COINCIDIR busca en la matriz de valores VERDADERO y FALSO una coincidencia exacta de FALSO. En este ejemplo, la función COINCIDIR devuelve el número 3, ya que el primer valor FALSO está en la tercera posición de la matriz. En este punto, esencialmente conocemos la ubicación del primer número en la celda.

La función final es REPLACE, que se utiliza para insertar el guión en la cadena de origen, comenzando en el tercer carácter.

Como puede ver, la fórmula para realizar la transformación puede ser un poco abrumadora de descifrar. Para aquellos que así lo deseen, puede ser más fácil crear una función definida por el usuario. La siguiente macro es un ejemplo de una que devolverá una cadena con el guión en el lugar correcto:

Function DashIn(myText As String)

Dim i As Integer     Dim myCharCode As Integer     Dim myLength As Integer

Application.Volatile     myLength = Len(myText)

For i = 1 To myLength         myCharCode = Asc(Mid(myText, i, 1))

If myCharCode >= 48 And myCharCode <= 57 Then             Exit For         End If     Next i     If i = 1 Or i > myLength Then         DashIn = myText     Else         DashIn = Left(myText, i - 1) & "-" _           & Mid(myText, i, myLength - 1)

End If End Function

La macro examina cada carácter de la cadena original y, cuando encuentra el primer carácter numérico, inserta un guión en ese punto. Usaría la función de esta manera:

=DashIn(A1)

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2613) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posteriores) aquí:

link: / excelribbon-Inserting_Dashes_between_Letters_and_Numbers [Insertar guiones entre letras y números].