Sam ha un gran numero di indirizzi in un foglio di lavoro. In quegli indirizzi deve assicurarsi che tutte le direzioni della bussola (NE, SE, NW e SW)

sono tutte maiuscole. Sarebbe molto utile se Sam potesse capire come cambiare una qualsiasi di queste direzioni minuscole (o miste) che appaiono solo alla fine di una cella con le loro controparti maiuscole. Non può semplicemente cercare uno spazio seguito da “ne”, poiché ciò cambierebbe Newton in NEwton, quindi si chiede come può essere sicuro che la sostituzione avvenga solo quando le lettere compaiono alla fine di una cella.

Non è possibile eseguire questa attività utilizzando gli strumenti Trova e sostituisci in Excel. Ciò significa che è necessario utilizzare una formula o una macro per eseguire l’attività. Le formule possono essere utilizzate per assicurarsi che gli ultimi due caratteri di una cella siano maiuscoli:

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

Il problema con una tale formula, tuttavia, è che non è discriminante. Finché qualsiasi cella su cui viene utilizzata ha una direzione della bussola come i suoi ultimi due caratteri, non ci sono problemi. Ma se alcune cellule non hanno la direzione della bussola, si verificano problemi molto velocemente. In tal caso è necessario che la formula controlli gli ultimi caratteri:

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

Questa formula controlla gli ultimi tre caratteri per vedere se c’è uno spazio seguito da ne, se, nw o sw. Se questo è il caso, gli ultimi due caratteri vengono scritti in maiuscolo. La formula può essere abbreviata se ci si avvicina diversamente:

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

Puoi accorciarlo ancora di più utilizzando una serie di direzioni della bussola nella formula:

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

Se preferisci non usare una formula, puoi facilmente creare una macro che farà il controllo e la conversione per te:

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

Per utilizzare la macro, basta selezionare le celle contenenti gli indirizzi e quindi eseguirla. Verifica se uno dei quattro punti cardinali si trova alla fine del valore della cella e, in tal caso, si assicura che la direzione della bussola sia maiuscola.

Dovresti notare che queste soluzioni si basano sul fatto che ci siano solo quattro possibili direzioni della bussola nei tuoi indirizzi. Se i tuoi indirizzi hanno direzioni della bussola più ampie (come N o SSE), allora vorrai sicuramente utilizzare una soluzione basata su macro perché il controllo diventa rapidamente molto complesso per una formula.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (9746) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia di menu precedente di Excel qui: