情報を行に分割する(Microsoft Excel)
Jamesは、一連の行に含まれるワークシートにいくつかのデータを持っています。データの列の1つには、セルごとに複数の行があるセルが含まれています。 (セル内のデータは、アイテム間でAlt + Enterを押すことによって行に分割されました。)Jamesは、このデータを複数の行に分割したいと考えています。たとえば、行の1つのセルに3行のデータがある場合、そのセルのデータは3つの行に分割する必要があります。
Excelは、Text toColumnsツールを使用してデータを個別の列に分割する便利な方法を提供します。これを使用して、Alt + Enterを押したときにExcelが挿入するASCII10文字の存在に基づいてデータを分割できます。問題は、これによりデータが別々の列に正常に分割される一方で、Jamesが要求したように、データが別々の行に分割されないことです。
つまり、この問題の解決策にはマクロの使用が含まれている必要があります。 1つのアプローチを次のコードに示します。この例では、マクロは、ワークシート内のすべてを「展開」すること、およびワークシート内のデータが行1から始まることを前提としています。
Sub CellSplitter() Dim Temp As Variant Dim CText As String Dim J As Integer Dim K As Integer Dim L As Integer Dim iColumn As Integer Dim lNumCols As Long Dim lNumRows As Long iColumn = 4 Set wksSource = ActiveSheet Set wksNew = Worksheets.Add iTargetRow = 0 With wksSource lNumCols = Cells(1,Columns.Count).End(xlToLeft).Column lNumRows = Cells(Rows.Count,1).End(xlUp).Row For J = 1 To lNumRows CText = .Cells(J, iColumn).Value Temp = Split(CText, Chr(10)) For K = 0 To UBound(Temp) iTargetRow = iTargetRow + 1 For L = 1 to lNumCols If L <> iColumn Then wksNew.Cells(iTargetRow, L) _ = .Cells(J, L) Else wksNew.Cells(iTargetRow, L) _ = Temp(K) End If Next L Next K Next J End With End Sub
マクロを実行するには、iColumn変数を使用して、分割するセルを含む列を指定する必要があることに注意してください。
ここに書かれているように、マクロは4番目の列の情報を分割します。さらに、セルの分割バージョンは新しいワークシートに保存されるため、元のワークシートはまったく影響を受けません。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(9396)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link情報を行に分割。