Mover el número de casa a su propia celda (Microsoft Excel)
Tom trabaja con muchas listas de direcciones. Una cosa que lo vuelve loco es cuando la dirección de la calle está en una sola celda. Tom necesita el número de la casa en una celda y la calle en una celda diferente. Entonces, si la dirección es «1234 Maple Glen Ave.», entonces necesita «1234» en una celda y «Maple Glen Ave.» en otro. Puede copiar el número de la casa en una columna colocada antes del nombre de la calle, pero es un proceso largo volver a escribir los números y luego eliminarlos del nombre de la calle. Tom se pregunta si existe una forma más sencilla de «dividir» el número de la casa del nombre de la calle.
Hay un par de formas de realizar esta tarea. Algunos podrían pensar que usar la herramienta Texto a columnas (en la pestaña Datos de la cinta)
daría los resultados deseados. Desafortunadamente, no es la mejor manera de separar el número de la casa. La razón es simple: si usa la herramienta especificando un delimitador, el único que tiene sentido es el espacio. Pero si haces eso, terminas con «1234 Maple Glen Ave.» distribuidos en cuatro columnas en lugar de las dos deseadas. Luego, necesitaría encontrar una forma de pegar el nombre de la calle nuevamente.
La otra forma de usar potencialmente la herramienta Texto a columnas es con un ancho de columna fijo (en lugar de un delimitador). Este enfoque solo funcionará si todas sus direcciones tienen el mismo número de dígitos en el número de la casa. En la mayoría de los conjuntos de datos, por supuesto, este no será el caso: los números de las casas pueden tener casi cualquier número de dígitos e incluso pueden incluir caracteres no numéricos (como «1234A», «1234-B» o «1234-36»).
Un enfoque que funcionará es usar fórmulas para separar las direcciones originales. Sus fórmulas pueden introducirse en el primer espacio de la dirección, devolviendo la parte a la izquierda del espacio o la parte a la derecha. Esta es la forma de sacar todo antes del espacio, dada una dirección en la celda A1:
=LEFT(A1,FIND(" ",A1)-1)
Si está absolutamente seguro de que las direcciones no contendrán ningún carácter no numérico, puede ajustar la fórmula en la función VALOR para que termine con el número de la casa como un valor numérico:
=VALUE(LEFT(A1,FIND(" ",A1)-1))
Para tomar la parte de la dirección que sigue al primer espacio, puede usar esta fórmula:
=MID(A1,FIND(" ",A1)+1,LEN(A1))
Si lo prefiere, podría diseñar una fórmula que haga referencia al número de casa que sacó con la primera fórmula. Suponga, por ejemplo, que su fórmula de número de casa está en la columna B; podría colocar lo siguiente en la columna C:
=TRIM(SUBSTITUTE(A1,B1,))
Con sus fórmulas en las columnas B y C (y las direcciones en la columna A), puede copiar las fórmulas para todas las filas necesarias. Luego puede seleccionar ese rango B: C y usar Pegado especial para pegar los valores nuevamente en esas celdas. Después de hacer esto, puede eliminar de forma segura las direcciones originales en la columna A.
Si a menudo tiene que hacer muchas direcciones, es mejor que utilice una macro para separar. La siguiente macro de ejemplo funciona en cualquier rango que haya seleccionado cuando la ejecuta. Inserta una columna de celdas en blanco a la izquierda de la selección, rellena esas celdas con el número de la casa y luego ajusta las direcciones para que el número de la casa ya no se incluya.
Sub SplitAddress() Dim c As Range Dim j As Integer Dim n As String Dim addr As String Selection.Insert Shift:=xlToRight Selection.Offset(0, 1).Select For Each c In Selection j = InStr(1, c, " ") n = Left(c, j) c.Offset(0, -1) = n addr = Trim(Right(c, Len(c) - j)) c = addr Next End Sub
Si lo prefiere, puede crear una función definida por el usuario que devuelva solo el número de la casa:
Function GrabHouseNumber(Raw As String) As Text Dim x As Variant Dim House As Variant x = Split(Raw, " ") 'use space char to split elements into array House = x(0) 'first element of array If Left(House, 1) Like "#" Then 'First char is numeric digit GrabHouseNumber = House 'set return value as house number Else GrabHouseNumber = "" 'First char is text, so not a house number End If End Function
Una ventaja de usar la función definida por el usuario es que verifica si la primera parte de la dirección original realmente comienza con un número o no. Si no es así, se supone que la dirección no comienza con un número de casa. (No es necesario que el número completo de la casa sea numérico; solo debe comenzar con un dígito).
_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 (13350) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.