ブライアンは、いくつかのアルファベット文字を含むセルがたくさんあるワークシートを持っています。彼は、セルのどこに表示されていても、それらのアルファベット文字だけを取り除く方法を探しています。たとえば、セルに「ABC123」が含まれている場合、ブライアンは「ABC」を削除したいと考えています

残りは「123」だけです。同様に、「A3B2C1」は「321」になるはずです

「#45P%」は「#45%」になります。

この問題に取り組む唯一の方法は、マクロを使用することです。文字を所定の位置で単純に削除したい場合は、影響を与えるセルを選択してから、各セルを調べて問題のある文字を削除するマクロを実行することで実行できます。これを行うには多くの方法があります。次のマクロは簡単なアプローチです。

Sub CleanText1()

Dim rngCell As Range     Dim intChar As Integer     Dim strCheckString As String     Dim strCheckChar As String     Dim intCheckChar As Integer     Dim strClean As String

For Each rngCell In Selection         strCheckString = rngCell.Value         strClean = ""



For intChar = 1 To Len(strCheckString)

strCheckChar = Mid(strCheckString, intChar, 1)

intCheckChar = Asc(strCheckChar)

Select Case intCheckChar                 Case 65 To 90      'upper case chars                     'Do nothing                 Case 97 To 122     'lower case chars                     'Do nothing                 Case 128 To 151    'special language chars                     'Do nothing                 Case 153 To 154    'special language chars                     'Do nothing                 Case 159 To 165    'special language chars                     'Do nothing                 Case Else                     strClean = strClean & strCheckChar             End Select         Next intChar         rngCell.Value = strClean     Next rngCell End Sub

文字を取り除くこのアプローチの良いところは、Select Case構造でチェックされているもの(および実行されているアクション)を変更するだけで、他の文字を簡単に取り除くことができることです。

元のセルを変更したくない場合は、文字列の「クリーンな」バージョンを返すユーザー定義関数をまとめることをお勧めします。これは、前のマクロにいくつかの変更を加えることで実現できます。

Function CleanText2(ByVal sRaw As String) As String     Dim intChar As Integer     Dim strCheckString As String     Dim strCheckChar As String     Dim intCheckChar As Integer     Dim strClean As String

Application.Volatile     strClean = ""

For intChar = 1 To Len(sRaw)

strCheckChar = Mid(sRaw, intChar, 1)

intCheckChar = Asc(strCheckChar)

Select Case intCheckChar             Case 65 To 90      'upper case chars                 'Do nothing             Case 97 To 122     'lower case chars                 'Do nothing             Case 128 To 151    'special language chars                 'Do nothing             Case 153 To 154    'special language chars                 'Do nothing             Case 159 To 165    'special language chars                 'Do nothing             Case Else                 strClean = strClean & strCheckChar         End Select     Next intChar     CleanText2 = strClean End Function

この関数を使用するには、次のような数式をセルに入れることができます。

=CleanText2(A1)

その結果、数式はセルA1の内容を乱すことなく、セルA1にあるものすべての「クリーンな」バージョンを返します。

注:

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

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

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