Reemplazar texto en celdas - Consejos de Excel

Tabla de contenido

Jean hizo la pregunta de Excel de esta semana:

Estoy tratando de convertir una lista de precios de proveedores en Excel para hacer coincidir sus códigos UPC con nuestro sistema de códigos UPC. Su libro de precios tiene una columna en Excel con una serie de números, por ejemplo. 000004560007 O cel000612004. Lo que tengo que hacer es doble. Necesito sacar los primeros tres ceros sin eliminar ningún otro 0 en la celda. A continuación, tengo que agregar un código de 3 dígitos "upc" antes del primer dígito numérico de la celda. Esta será una necesidad permanente. Tendré que capacitar a varias personas para que utilicen el sistema Excel.

Parece que Jean ya consideró usar Editar-Reemplazar para deshacerse de los tres ceros. Esto no funcionaría porque hacer una edición y reemplazar "000004560007" haría que desaparecieran ambas apariciones de 000.

Primero, quiero sugerir que Jean inserte una columna temporal junto a los códigos de precios actuales, escriba una fórmula para hacer la transformación, luego use Editar-Copiar, Editar-Pegar Valores-Especiales para copiar la fórmula de nuevo sobre los códigos de precio originales.

La función REPLACE () mal documentada funcionará en este caso. Me decepcionó la implementación de REPLACE (). Hubiera pensado que pediría un texto específico para reemplazar, pero en cambio le pide al usuario que averigüe las posiciones de los caracteres para reemplazar. REPLACE reemplazará parte de una cadena de texto con una nueva cadena. Los cuatro argumentos que le pasa a la función son la celda que contiene el texto antiguo, la posición del carácter en el texto antiguo que desea reemplazar, la cantidad de caracteres para reemplazar y el nuevo texto a usar.

Mi suposición simplificadora es que los tres ceros representan el inicio del código UPC en la cadena. Por lo tanto, no es necesario buscar el primer carácter numérico de la celda. Una vez que la fórmula encuentra los tres ceros, puede reemplazar esos tres ceros con la cadena "upc".

Para encontrar la ubicación de la primera aparición de "000" en el texto, usaría esta fórmula:

=FIND(A2,"000")

La fórmula que Jean necesitaría ingresar en la celda B2 sería:

=REPLACE(A2,FIND("000",A2),3,"upc")

Mi idea es que los analistas de precios resalten un rango de celdas y luego invoquen esta macro. La macro utilizará un bucle con "Para cada celda de la selección" al principio. Con este bucle, "celda" se convierte en una variable de rango especial. Puede usar cell.address o cell.value o cell.row para encontrar la dirección, el valor o la fila de la celda actual en el ciclo. Aquí está la macro:

Public Sub Jean() ' This macro will replace the first occurrence of "000" ' in each selected cell with the string "upc" ' copyright 1999 www.MrExcel.com For Each cell In Selection cell.Value = Replace(cell.Value, "000", "upc", 1, 1, vbTextCompare) Next cell End Sub

Tenga en cuenta que esta es una macro de tipo destructivo. Cuando el usuario resalta un rango de celdas y ejecuta la macro, esas celdas cambiarán. No hace falta decir que desea probar a fondo su macro con datos de prueba antes de soltarla con datos de producción reales. Cuando tiene una situación como la de Jean, en la que constantemente se le pedirá que transforme una columna utilizando una fórmula compleja, escribir una macro simple como la que se ilustra aquí puede ser una herramienta eficaz y que le ahorrará tiempo.

Articulos interesantes...