サムはワークシートに多数の住所を持っています。それらのアドレスでは、彼はすべてのコンパスの方向(NE、SE、NW、およびSW)を確認する必要があります

すべて大文字です。セルの最後にのみ表示されるこれらの小文字(または大文字と小文字が混在する)の方向を、対応する大文字と一緒に変更する方法をサムが理解できれば、非常に役立ちます。ニュートンがニュートンに変わるため、スペースの後に「ne」が続くものを検索することはできません。そのため、セルの最後に文字が表示された場合にのみ置換が行われるようにするにはどうすればよいのでしょうか。

Excelの検索ツールと置換ツールを使用してこのタスクを実行する方法はありません。つまり、タスクを実行するには、数式またはマクロを使用する必要があります。数式を使用して、セルの最後の2文字が大文字であることを確認できます。

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

しかし、そのような公式の問題は、それが無差別であるということです。使用されているセルの最後の2文字がコンパスの方向である限り、問題はありません。しかし、一部のセルにコンパスの方向がない場合は、問題がすぐに発生します。その場合、実際に数式で最後の文字をチェックする必要があります:

=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))))

この数式は、最後の3文字をチェックして、スペースの後にne、se、nw、またはswのいずれかが続くかどうかを確認します。この場合、最後の2文字は大文字になります。別の方法でアプローチすると、式を短くすることができます:

=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)

次の式でコンパスの方向の配列を使用すると、さらに短くすることができます。

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

数式を使用したくない場合は、チェックと変換を行うマクロを簡単に作成できます。

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

マクロを使用するには、アドレスを含むセルを選択して実行します。 4つのコンパスポイントの1つがセル値の最後にあるかどうかを確認し、そうである場合は、コンパスの方向が大文字であることを確認します。

これらのソリューションは、住所に可能なコンパスの方向が4つしかないことに基づいていることに注意してください。住所に広範囲のコンパス方向(NやSSEなど)がある場合は、数式のチェックがすぐに非常に複雑になるため、マクロベースのソリューションを使用することをお勧めします。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(9746)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。