ワークシートのデータを取得し、列の1つに名前が含まれているということはおそらく以前に起こったことでしょう。唯一の問題は、名前がすべて一緒に束ねられていることです。たとえば、セルには「AllenWyatt」が含まれています

ただし、1つの列に名を、右側の隣接する列に姓を配置することをお勧めします。名前をどのように分解しますか?

Excelの[テキストから列へ]機能を使用して、データを簡単に分解できます。次の手順に従ってください:

。分割するセルの範囲を選択します。

。 [データ]メニューから[テキストから列へ]を選択します。 Excelは、テキストを列に変換ウィザードを開始します。 (図1を参照)

。選択したテキストを固定幅にするか区切り文字にするかを選択します。

(姓と名の間にスペースがある場合、テキストは区切られます。)

。 [次へ]をクリックします。

。 Excelで認識させる区切り文字を指定します。名前を分解する場合は、区切り文字としてスペースを使用するようにしてください。

。 [完了]をクリックします。

Excelは、選択した範囲のセルを引き離し、指定した区切り文字ですべてのテキストを区切ります。ただし、Excelはデータを保持するために多くの列が必要です。

データを列全体に完全に分散させたくない場合は、マクロを使用する必要があります。たとえば、セルに「John Davis、Esq。」が含まれている場合、Text to Columns機能を使用すると、データが3つの列に分散されます。最初の列には「John」が含まれ、2番目の列には「Davis」が含まれます(カンマ)、および「Esq」を含む3番目。データを2つの列(一方の「John」ともう一方の「Davis、Esq。」)に分割したい場合は、次のマクロが役立ちます。

Sub PullApart()

Dim FirstCol As Integer, FirstRow As Integer     Dim RowCount As Integer     Dim ThisRow As Integer     Dim j As Integer, k As Integer     Dim MyText As String

FirstCol = ActiveWindow.RangeSelection.Column     FirstRow = ActiveWindow.RangeSelection.Row     RowCount = ActiveWindow.Selection.Rows.Count

For j = 1 To RowCount         ThisRow = FirstRow + j - 1         MyText = Cells(ThisRow, FirstCol).Text         k = InStr(MyText, " ")

If k > 0 Then             Cells(ThisRow, FirstCol + 1).Value = Mid(MyText, k + 1)

Cells(ThisRow, FirstCol).Value = Left(MyText, k - 1)

End If     Next j End Sub

このマクロは各セルを調べて、選択したセルの最初のスペースまですべてを残し、スペースの後のすべてを右側の列に移動します。このマクロの唯一の「落とし穴」は、実行時に選択したセルの右側の列には何もありません。

Note:

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

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

このヒント(2967)はMicに適用されます。 rosoft Excel 97、2000、2002、および2003。Excel(Excel 2007以降)のリボンインターフェイスに関するこのヒントのバージョンは、次の場所にあります。