1

データ分析のために複数の列を持つ行に変換する必要がある複数の行を持つクローンで編成されたデータがあります。例えば、

    ID  Date of entry   Location    Data1   Data2
    1   20101030        1           a       b
    1   20101030        2           c       d
    1   20101125        1           w       v
    1   20101125        2           e       d
    1   20110314        1           we      r
    1   20110314        2           f       f
    2   20091024        1           ewr     rte
    2   20091024        2           gr      ert
    3   20061128        1           jy      bf
    3   20061128        2           u       df
    3   20110517        1           rd      fd
    3   20110517        2           sg      sd

各 ID 行が複数のデータ列を持つこの形式に変換されます (以下に先頭行のみを示します)。

ID  entry_1 Dateofentry location_1  data1   data2   location_2  data1   data2   entry_2 Dateofentry location_1  data1   data2   location_2  data1   data2   entry_3 Dateofentry location_1  data1   data2   location_2  data1   data2

誰でも手伝ってもらえますか?

ありがとう!GT

4

4 に答える 4

1

ヘッダーは自分で追加する必要がありますが、このコードは必要なことを実行する必要があります。

Sub ConsolidateRows_SpreadAcross()

Dim lastRow As Long, i As Long, j As Long
Dim colMatch As Variant, colConcat As Variant

application.ScreenUpdating = False 'disable ScreenUpdating to avoid screen flashes

lastRow = range("A" & Rows.Count).End(xlUp).Row 'get last row

For i = lastRow To 2 Step -1

    If Cells(i, 2) = Cells(i - 1, 2) Then
        range(Cells(i, 3), Cells(i, Columns.Count).End(xlToLeft)).Copy Cells(i - 1, Columns.Count).End(xlToLeft).Offset(, 1)
        Rows(i).Delete
    Else
        If Cells(i, 1) = Cells(i - 1, 1) Then
            range(Cells(i, 2), Cells(i, Columns.Count).End(xlToLeft)).Copy _
                Cells(i - 1, Columns.Count).End(xlToLeft).Offset(, 1)
            Rows(i).Delete
        End If
    End If

Next

application.ScreenUpdating = True 'reenable ScreenUpdating
End Sub
于 2012-09-27T04:02:38.847 に答える
0

テーブル全体をコピーし、新しいデータを貼り付けたい場所を右クリックすると、[形式を選択して貼り付け] メニューが表示されます。そのメニューから、移調を選択します。これにより、列が行に転置されます。

于 2012-09-27T03:29:59.250 に答える