データの再編成(Microsoft Excel)
データリストをExcelにインポートすると、列Aに大量のデータが表示されることは珍しくありません。実際、他の列に何も表示されないことも珍しくありません。 (もちろん、これはすべて、インポートするデータの性質によって異なります。)Excelでデータを操作する一環として、データを「再編成」して、列Aだけでなくより多くの列にプルアップすることもできます。 。
例として、データをインポートし、最終的に列Aの行1から212を占めると想像してください。本当に必要なのは、データが列AからFを占めることですが、データを保持するには多くの行が必要です。したがって、A2をB1、A3からC1、A4、D1、A5からE1、A6からF1に移動し、次にA7からA2、A8からB2などに移動する必要があります。
この方法でデータを再編成するには、次のマクロを使用できます。
再編成するデータを選択して、マクロを実行します。再編成されたデータに必要な列数を尋ねられたら、データシフトが始まります。
Sub CompressData() Dim rSource As Range Dim rTarget As Range Dim iWriteRow As Integer Dim iWriteCol As Integer Dim iColCount As Integer Dim iTargetCols As Integer Dim J As Integer iTargetCols = Val(InputBox("How many columns?")) If iTargetCols > 1 Then Set rSource = ActiveSheet.Range(ActiveWindow.Selection.Address) If rSource.Columns.Count > 1 Then Exit Sub iWriteRow = rSource.Row + (rSource.Cells.Count / iTargetCols) iWriteCol = rSource.Column + iTargetCols - 1 Set rTarget = Range(Cells(rSource.Row, rSource.Column), _ Cells(iWriteRow, iWriteCol)) For J = 1 To rSource.Cells.Count rTarget.Cells(J) = rSource.Cells(J) If J > (rSource.Cells.Count / iTargetCols) Then _ rSource.Cells(J).Clear Next J End If End Sub
マクロは、マクロの実行時に選択したソース範囲と、必要な列数に基づいて計算されたサイズによって定義されたターゲット範囲の2つの範囲を定義することによって情報を転送します。ソース範囲はrSource変数オブジェクトで表され、ターゲット範囲はrTargetで表されます。 For … Nextループは、実際に値を転送するために使用されます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2301)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkデータの再編成。