目次
今回は、文字列から特定の文字を削除する方法と、複数のセルから不要な文字を一度に削除する方法について説明します。
Excelにデータをインポートする際、多くの特殊文字がワークシートに移動することがあります。 さらにイライラするのは、一部の文字が見えないため、テキスト文字列の前後や内部に余分な空白が生じることです。 このチュートリアルでは、これらの問題に対する解決策を提供し、セルごとにデータを調べて不要なデータを削除する手間を省きます。の文字が手書きで表示されます。
Excelのセルから特殊文字を削除する
セルから特定の文字を削除するには、SUBSTITUTE関数を最も単純な形にして、その文字を空の文字列に置き換えます。
SUBSTITUTE( セル , 焦がす , "")例えば、A2からクエスチョンマークを消すには、B2の式がある。
=substitute(a2, "?", "")
キーボードにない文字を削除するには、元のセルから数式にコピー&ペーストします。
例えば、反転したクエスチョンマークを消すには、次のようにします。
=substitute(a2, "¿", "")
しかし、もし不要なキャラクターが 瞑瞑 とか、正しくコピーできない場合は、どのように数式に入れるのですか? 単純に、CODE関数を使ってそのコード番号を見つければいいのです。
この場合、セルA2の最後に不要な文字("¿")が来るので、CODE関数とRIGHT関数を組み合わせて、その固有のコード値である191を取得することにしています。
=code(right(a2))である。
文字のコードがわかったら、対応するCHAR関数を上の一般式に当てはめる。 今回のデータセットでは、以下のような式になる。
=substitute(a2, char(191),"")
注)SUBSTITUTE(サブスティテュート)関数は ケースセンシティブ 小文字と大文字を別の文字として扱うので、不要な文字がアルファベットの場合はその点に注意してください。
文字列から複数文字を削除する
前回の記事では、SUBSTITUTE関数を複数入れ子にして、Excelの文字列から特定の文字を削除する方法について説明しました。 同じ方法で、2つ以上の不要な文字を一度に削除することができます。
代用品(代用品( セル , チャール1 , ""), シャル2 , ""), シャル3 , "")例えば、A2の文字列から、通常の感嘆符や疑問符だけでなく、反転したものも消すには、次の式を使用します。
=substitute(substitute(a2, "!", ""), "¡", ""), "?", ""), "¿", "")
161は "¡"の文字コード、191は "¿"の文字コードで、CHAR関数の助けを借りて同じことができる。
=substitute(substitute(a3, "!", ""), "?", ""), char(161), ""), char(191), "")
ネストしたSUBSTITUTE関数は、適度な文字数であれば問題ありませんが、削除する文字数が数十文字になると、数式が長くなりすぎて管理が大変です。 次の例では、よりコンパクトでエレガントな解決策を紹介します。
不要な文字を一度に削除
このソリューションは、Microsoft 365のExcelでのみ動作します
ご存知のように、Excel 365には、再帰的な計算を含む独自の関数を作成できる特別な機能があります。 この新しい関数はLAMBDAという名前で、その詳細は上記のリンク先のチュートリアルにあります。 以下では、いくつかの実例を使ってそのコンセプトを説明します。
LAMBDA のカスタム関数で じょうよせず は以下の通りです。
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1))), string)
この関数をワークシートで使用できるようにするには、まず名前を付ける必要があります。 そのためには、Ctrl + F3 キーを押しながら 名 称 マネージャー を定義し、その後に 新名称 といった具合に。
- での 名称 ボックスに、関数の名前を入力します。 文字列の削除 .
- スコープを設定する ワークブック .
- での について言及しています。 ボックスで、上記の数式を貼り付けます。
- オプションで、パラメータの説明を コメント セル内に数式を入力すると、パラメータが表示されます。
- クリック よっしゃー をクリックして、新しい機能を保存します。
詳しい方法は、LAMBDAカスタム関数の名前の付け方をご覧ください。
関数に名前が付けば、他のネイティブな数式と同じように参照することができます。
ユーザーから見ると、今回のカスタム関数の構文はこのようにシンプルです。
RemoveChars(文字列, 文字列)どこで
- 文字列 - は,元の文字列,または文字列を含むセル/範囲への参照である。
- カーズ - 削除する文字列。 テキスト文字列またはセル参照で表すことができる。
便宜上、あるセル、例えばD2に不要な文字を入力する。 A2からその文字を削除するには、次のような数式になる。
=RemoveChars(A2, $D$2)
数式が正しく動作するために、以下のことにご注意ください。
- D2では、スペースも排除したい場合を除き、文字はスペースなしで表示されます。
- 特殊文字を含むセルのアドレスは、$記号($D$2)でロックされ、数式を下のセルにコピーするときに参照が変更されないようになっています。
そして、数式を下にドラッグするだけで、セルA2~A6からD2に記載されている文字がすべて削除されます。
1つの数式で複数のセルをクリーニングするには、第1引数に範囲A2:A6を指定します。
=RemoveChars(A2:A6,D2)です。
数式は一番上のセルにのみ入力されるので、セル座標の固定を気にする必要はありません。 この場合、相対参照(D2)で問題ありません。また、動的配列のサポートにより、数式は参照されているすべてのセルに自動的に展開されます。
定義済み文字セットの削除
複数のセルからあらかじめ定義された文字を削除するには、別の LAMBDA を作成し、その LAMBDA からメインの 文字削除 関数で,第2パラメータに望ましくない文字を指定します。 例えば
削除する場合 特殊文字 という名前のカスタム関数を作成しました。 RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "? ¿!¡*%#@^"))
への 番号を消す という名前の関数をもう一つ作りました。 番号の削除 :
=LAMBDA(string, RemoveChars(string, "0123456789"))
上記の2つの関数は、引数として元の文字列を1つだけ必要とするので、非常に簡単に使うことができます。
をなくすこと。 特殊文字 をA2より計算すると、式になります。
=RemoveSpecialChars(A2)です。
のみを削除する場合 数値文字
=RemoveNumbers(A2)です。
この機能の仕組み
要するに 文字削除 のリストをループする関数です。 チャールズ 再帰呼び出しの前に、IF関数が残りの文字をチェックし、もし チャールズ 文字列が空でない場合(chars"")、この関数は自分自身を呼び出します。 最後の文字が処理されるとすぐに、この式は次のように返します。 列 を、現在の形と出口にする。
詳しい計算式の説明は、不要な文字を削除する再帰的LAMBDAをご覧ください。
VBAで特殊文字を除去する
関数は、すべてのバージョンのExcelで動作します
LAMBDA関数がExcelで利用できない場合、VBAで同様の関数を作成することを妨げるものは何もありません。 ユーザー定義関数(UDF)は2つの方法で記述することができます。
特殊文字削除のカスタム機能 再帰的 :
このコードは、前述したLAMBDA関数のロジックをエミュレートしています。
Function RemoveUnwantedChars(str As String , chars As String ) If ( "" chars) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Else RemoveUnwantedChars = str End If End Function特殊文字除去のカスタム機能 非再帰的 :
ここでは、1からLen(chars)までの不要な文字を循環させ、元の文字列で見つかったものを何もない状態に置き換えます。 MID関数は不要な文字を一つずつ取り出し、それをReplace関数に渡します。
Function RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str End FunctionExcelにVBAコードを挿入する方法」で説明したように、上記のコードのいずれかをワークブックに挿入すれば、カスタム関数が使用できるようになります。
新しいユーザー定義関数とLambdaで定義された関数を混同しないように、別の名前にしています。
RemoveUnwantedChars(string, chars)元の文字列がA2、歓迎されない文字がD2にあると仮定すると、この式で取り除くことができる。
= RemoveUnwantedChars(A2, $D$2)
ハードコードされた文字を含むカスタム関数
各計算式に特殊文字を指定するのが面倒な場合は、コード内で直接指定することもできます。
Function RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/~+-" For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveSpecialChars = str End Functionなお、上記のコードはデモ用ですので、実際の使用にあたっては、以下の行に削除したい文字をすべて含めるようにしてください。
chars = "?¿!¡*%#$(){}[]^&/}+-".
このカスタム関数の名前は RemoveSpecialChars であり、引数は1つだけで、元の文字列を必要とします。
RemoveSpecialChars(文字列)データセットから特殊文字を取り除くには、次のような式になります。
=RemoveSpecialChars(A2)です。
Excelで印刷不可能な文字を削除する
Microsoft Excelには、印字されない文字を削除する特別な機能、CLEAN関数があります。 技術的には、7ビットASCIIセットの最初の32文字(コード0から31まで)を削除するものです。
例えば、削除する場合 非表示文字 をA2から読み取ると、以下のような式になります。
=CLEAN(A2)
この場合、印字されない文字はなくなりますが、テキストの前後や単語間のスペースは残ります。
を解消するために 余白 は、TRIM 関数で CLEAN 式をラップします。
=trim(clean(a2))
このとき、先頭と末尾のスペースはすべて削除され、中間のスペースはスペース1文字になります。
もし、絶対に削除したいのであれば オールスペース を文字列の中に入れて、さらに空白文字(コード番号32)を空の文字列に置き換えます。
=trim(clean((substitute(a2, char(32), ""))))
ワークシートにスペースや見えない文字が残っていませんか? それは、それらの文字がUnicode文字セットで異なる値を持っていることを意味します。
例えば、文字コードとして こくみんじゅんくうかん ( )は160で、この計算式でパージできます。
=substitute(a2, char(160)," ")
を消去するには 特定非印刷文字 詳しい説明と計算式の例は、こちら:特定の非表示文字を削除する方法。
Ultimate Suiteで特殊文字を削除する
Microsoft 365、Excel 2019 - 2010のExcelに対応。
最後の例として、Excelで特殊文字を削除する最も簡単な方法を紹介しましょう。 Ultimate Suiteがインストールされていれば、このようなことが可能です。
- について エイブルビットのデータ タブで テキスト グループをクリックします。 削除 > 文字の削除 .
一瞬で、完璧な仕上がりになります。
もし何か問題が発生しても、心配はいりません。 このワークシートのバックアップ ボックスがデフォルトで選択されています。
Removeツールを試してみたいですか? 評価版へのリンクは、すぐ下にあります。 読んでくださってありがとうございます。
ダウンロード可能なもの
特殊文字の削除 - 例 (.xlsm ファイル)
Ultimate Suite - 体験版 (.exeファイル)