Sam tiene una gran cantidad de direcciones en una hoja de trabajo. En esas direcciones, debe asegurarse de que todas las direcciones de la brújula (NE, SE, NW y SW)

están todos en mayúsculas. Sería muy útil si Sam pudiera descubrir cómo cambiar cualquiera de estas direcciones en minúsculas (o mayúsculas y minúsculas) que aparecen solo al final de una celda con sus contrapartes en mayúsculas. No puede simplemente buscar un espacio seguido de «ne», ya que eso cambiaría a Newton a NEwton, por lo que se pregunta cómo puede asegurarse de que el reemplazo ocurra solo cuando las letras aparecen al final de una celda.

No hay forma de realizar esta tarea con las herramientas Buscar y reemplazar en Excel. Eso significa que debe utilizar una fórmula o una macro para realizar la tarea. Se pueden usar fórmulas para asegurarse de que los dos últimos caracteres de una celda estén en mayúsculas:

=LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2))

Sin embargo, el problema con esta fórmula es que no discrimina. Siempre que cualquier celda en la que se utilice tenga una dirección de brújula como sus dos últimos caracteres, no hay problema. Pero si algunas celdas no tienen la dirección de la brújula, entonces te encuentras con problemas muy rápido. En ese caso, es necesario que la fórmula marque los últimos caracteres:

=IF(LOWER(RIGHT(A1,3))=" ne", LEFT(A1,LEN(A1)-2) & "NE", IF(LOWER(RIGHT(A1,3))=" se", LEFT(A1,LEN(A1)-2) & "SE", IF(LOWER(RIGHT(A1,3))=" nw", LEFT(A1,LEN(A1)-2) & "NW", IF(LOWER(RIGHT(A1,3))=" sw", LEFT(A1,LEN(A1)-2) & "SW", A1))))

Esta fórmula verifica los últimos tres caracteres para ver si son un espacio seguido de ne, se, nw o sw. Si este es el caso, esos dos últimos caracteres se escriben en mayúsculas. La fórmula se puede acortar un poco si la enfocas de manera diferente:

=IF(OR(LOWER(RIGHT(A1,3))=" ne", LOWER(RIGHT(A1,3))=" se", LOWER(RIGHT(A1,3))=" nw", LOWER(RIGHT(A1,3))=" sw"), LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2)), A1)

Si prefiere no usar una fórmula, puede crear fácilmente una macro que hará la verificación y conversión por usted:

Sub CapDirections()

For Each RCell In Selection         CText = UCase(Right(RCell.Value, 3))

If CText = " NE" Or CText = " SE" _           Or CText = " SW" Or CText = " NW" Then             RCell.Value = Left(RCell.Value, _               Len(RCell.Value) - 3) + CText         End If     Next End Sub

Para usar la macro, simplemente seleccione las celdas que contienen las direcciones y luego ejecútela. Comprueba si uno de los cuatro puntos de la brújula se encuentra al final del valor de la celda y, si lo está, se asegura de que la dirección de la brújula esté en mayúsculas.

Debe tener en cuenta que estas soluciones se basan en que solo hay cuatro direcciones posibles de la brújula en sus direcciones. Si su dirección tiene direcciones de brújula más amplias (como N o SSE), definitivamente querrá usar una solución basada en macros porque la verificación rápidamente se vuelve muy compleja para una fórmula.

_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 (9745) 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 posterior) aquí:

link: / excelribbon-Replacing_Characters_at_the_End_of_a_Cell [Reemplazo de caracteres al final de una celda].