すべてのスペースのトリミング(Microsoft Excel)
Sudhakarの列Aには、末尾にスペースがあるデータがいくつかあります。彼がデータに対してTRIM関数を使用すると、末尾のスペースが削除されますが、すべてではありません。彼は、なぜいくつかのスペースがスキップされるのか、そしてどのようにしてそれらをすべて削除できるのか疑問に思います。
この問題に取り組むには、実際にはいくつかの異なる方法があります。
目的に適した方法は、常に、使用しているデータの性質によって異なります。
まず、セルでTRIMを使用する場合は、スペースのみが削除されることに注意してください。これは、定義上、ASCIIコードが32の文字のみを削除することを意味します。残念ながら、「スペース」として表示されるが実際にはスペースではない他のASCII文字があります。これらはTRIMによって削除されません。
それらの厄介なキャラクターが何であるかを理解できれば助かりますよね?セル内のテキストがそれほど長くない場合は、セルの内容を確認し、各文字をASCII値とともに表示する便利な小さなマクロを次に示します。
Sub StringContents() Dim sTemp As String Dim sMsg As String Dim J As Integer If Selection.Cells.Count > 1 Then sMsg = "Please select only one cell" Else sMsg = "Full string: >" & ActiveCell.Value & "<" & vbCrLf For J = 1 To Len(ActiveCell.Value) sTemp = Mid(ActiveCell.Value, J, 1) sMsg = sMsg & ">" & sTemp & "< " & Asc(sTemp) & vbCrLf Next J End If MsgBox sMsg End Sub
マクロを使用するには、テストする単一のセルを選択して実行するだけです。文字列内の個々の文字とともに完全な文字列を表示するメッセージボックスが表示されます。
TRIMが削除しない問題のある文字のASCII値がわかったら、その文字の代わりに使用できます。たとえば、非スペーススペースが160のASCII値を示している場合、次の方法で置換を行うことができます。
=SUBSTITUTE(A1,CHAR(160)," ")
これにより、文字列内のASCII160文字が実際のスペース文字に置き換えられます。同様に、他の同様の偽のスペースを削除できます。
もちろん、別のExcel関数を使用して、次のような印刷されないASCII文字の一部を取り除くこともできます。
=CLEAN(A1)
それはすべてを取り除くわけではありませんが、多くの問題のあるキャラクターをきれいにするのに良い仕事をします。
次のようにして、クリーンアップ式で関数の組み合わせを開始することもできます。
=TRIM(CLEAN(A1))
この方法で、さらに一歩進めることができます:
=TRIM(SUBSTITUTE(CLEAN(A2),CHAR(160)," "))
この式は、ASCII 160文字とCLEANによってキャッチされたものを取り除き、その結果に対してTRIMを実行します。
かなりの数のセルをクリーニングする必要がある場合、またはセルを定期的にクリーニングする必要がある場合は、マクロを使用して手間のかかる作業を行うことを検討してください。次のマクロは、多くの非印刷文字を取り除き、表示されている文字と句読点だけを残します。
Sub CleanCells() Dim rTarget As Range Dim c As Range Dim sTemp As String Dim J As Integer Set rTarget = Selection.SpecialCells(xlCellTypeConstants, 2) For Each c In rTarget sTemp = c.Value For J = 1 To 31 sTemp = Replace(sTemp, Chr(J), " ") Next J For J = 127 To 255 sTemp = Replace(sTemp, Chr(J), " ") Next J c.Value = sTemp Next c End Sub
マクロは、定数値を含む現在の選択範囲内のセルでのみ機能します。つまり、数式を含まないセル。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(5132)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。