キャロルは別のプログラムからExcelに情報をインポートします。これにより、一部のセルに余分なスペースが残ることがよくあります。セル内にあるのはスペースだけなので、空のように見えますが、実際にはそうではありません。キャロルは、これらの不要なスペースを取り除くための最良の方法について疑問に思いました。

使用できるアプローチはいくつかあります。 1つは、Excelの検索および置換機能を使用することです。次の手順に従ってください:

。 Ctrl + Hを押して、[検索と置換]ダイアログボックスの[置換]タブを表示します。

。 [検索する文字列]ボックスに、2つのスペースを入力します。

。 [置換]ボックスが空であることを確認してください。

。 [セルの内容全体に一致する]チェックボックスをオンにします。

。 [すべて置換]をクリックします。

。 Excelで一致するものがなくなるまで、[すべて置換]をクリックし続けます。

。手順2から5を繰り返しますが、今回は手順2で1つのスペースのみを使用します。

。 [検索と置換]ダイアログボックスを閉じます。

別のオプションは、ワークシートのトリム機能を使用することです。このアプローチは、変更するセルがすべてワークシートの特定の領域(単一の列など)にある場合に便利です。たとえば、列Dのセルからスペースを削除する場合は、次の数式を使用できます。

=Trim(D1)

Trim関数は、セルD1の内容を先頭または末尾のスペースなしで返します。次に、この数式の結果をコピーし、[形式を選択して貼り付け]を使用して、必要なセルに値を貼り付けることができます。

もちろん、処理する必要のあるワークシートがたくさんある場合、またはセルに余分なスペースを含むワークブックを定期的に入手する場合は、スペースを取り除くことができるマクロを作成することをお勧めします。おそらく最も速い方法は、ワークシート内のすべてのセルを調べて、余分なスペースを取り除くことです。

Sub CleanSheet1()

For Each cell In ActiveSheet.UsedRange         cell.Value = Trim(cell)

Next cell End Sub

マクロは各セルをステップスルーし、Trim関数を使用して先頭または末尾のスペースを取り除きます。これはすべてのセルで機能しますが、データの特性によっては、望ましくない結果が生じる可能性があります。先頭にスペースがあるセルがあり、それらのスペースが必要な場合は、別のマクロを使用する必要があります。このバージョンでは、より満足のいく結果が得られます:

Sub CleanSheet2()

Dim rCell As Range     Dim rText As Range

Set rText = Cells.SpecialCells( _       xlCellTypeConstants, _       xlTextValues)

For Each rCell In rText         If Trim(rCell.Value) = "" Then             rCell.ClearContents         End If     Next     Set rText = Nothing     Set rCell = Nothing End Sub

定数(ワークシート内のすべてのテキストを含む)を含むセルのみをチェックし、次にTrim関数を使用するとセルが空になるかどうかをチェックします。その場合、セルはクリアされます。 Trim関数でセルが空にならない場合、セルは変更されません。

注:

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

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

このヒント(12471)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。

Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります: