Johnのワークシートには、列Aに非常に長いテキスト文字列が多数含まれています。彼は、各文字列から最初の249文字を個別に引き出し、文字列の右側の各セルに1文字を配置する必要があります。

このタスクを実行するには、いくつかの方法があります。簡単な式を使用することで、非常に簡単に行うことができます。たとえば、最初のテキスト文字列がセルA1にある場合は、その右側のセルB1に次の数式を入力します。

=MID($A1,COLUMN()-1,1)

この数式は、Excelワークシート関数を使用してテキスト文字列を分解します。この場合、COLUMN関数は、数式が列Bにあり、それがワークシートの2番目の列であるため、値2を返します。

この値は1ずつ減らされ、セルA1の文字列へのポインタとして使用され、抽出された文字の出所を示します。この数式を正しくコピーすると、必要なセルの数に関係なく、文字列の個々の文字が連続した順序で表示されます。

もちろん、ワークシートにかなりの数の文字列がある場合(Johnのように)、この数式を249列以下にコピーすると、たとえば、数百行になると、ワークシートが非常に遅くなる可能性があります。このような状況では、数式の代わりにマクロを使用して文字列を分割することが望ましい場合があります。次のマクロSplitUpは、実際に分解するための1つのアプローチです。

Sub SplitUp()

Dim c As Range     Dim r As Range     Dim sTemp As String     Dim z As Integer

Set r = Range("A1", Range("A1048576").End(xlUp))

For Each c In r         sTemp = Left(c, 249)

For z = 1 To Len(sTemp)

c.Offset(0, z) = Mid(sTemp, z, 1)

Next z     Next End Sub

マクロは、値を含む列Aのすべてのセルで構成される範囲(r)を定義することから始まります。次に、c変数を使用して範囲内の各セルを表し、最初の249文字を各セルから引き出します。次に、For …​ Nextループを使用して、文字列から各文字をプルし、文字列の右側のセルに詰め込みます。

注:

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

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

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

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