2016-07-13 24 views
1

私は以下のようにテーブル内のデータを持っている:Excelで複数の行を1行に変換するにはどうすればよいですか?

pre

私はテーブル内の、上記のようにデータを持っています。このテーブルには、多くのMMID M000071、M000073、....などがあります。選考基準は資産によって異なる場合があります。各MMIDには複数の日付が含まれている場合があります。

私は以下のように出力したい:

after

20数千人がテーブルにあります。だから私はこの仕事をする簡単な方法を見つけたいと思っています。

+0

re:* 'この仕事を簡単に行う方法を探したいです。' * - VBAでバリアント配列を使用します。 – Jeeped

答えて

1

私にVBAを使用する提案を与える@Jeeped。

Excel VBAの数時間の学習を通して、私はこの問題を解決し、私が望む答えを得ることができました。

次のようにコード:

Option Explicit 

Public Sub sort() 
    Dim j As Long 
    Dim cursor As Long 
    j = 2 
    cursor = 2 

    For j = 2 To 20150 
X:  If Worksheets("Sheet2").Cells(cursor, "A").Value = "" Then 
      Worksheets("Sheet2").Cells(cursor, "A").Value = Worksheets("Sheet1").Cells(j, "A").Value 
      Worksheets("Sheet2").Cells(cursor, "H").Value = Worksheets("Sheet1").Cells(j, "D").Value 
      Select Case Worksheets("Sheet1").Cells(j, "B") 
       Case "ACR" 
        Worksheets("Sheet2").Cells(cursor, "B") = Worksheets("Sheet1").Cells(j, "C") 
       Case "Microalbumin" 
        Worksheets("Sheet2").Cells(cursor, "C") = Worksheets("Sheet1").Cells(j, "C") 
       Case "eGFR" 
        Worksheets("Sheet2").Cells(cursor, "D") = Worksheets("Sheet1").Cells(j, "C") 
       Case "LDL_HDL_TotChol" 
        Worksheets("Sheet2").Cells(cursor, "E") = Worksheets("Sheet1").Cells(j, "C") 
       Case "HbA1C" 
        Worksheets("Sheet2").Cells(cursor, "F") = Worksheets("Sheet1").Cells(j, "C") 
       Case "UricAcid" 
        Worksheets("Sheet2").Cells(cursor, "G") = Worksheets("Sheet1").Cells(j, "C") 
      End Select 
     Else 
      If Worksheets("Sheet1").Cells(j, "A").Value = Worksheets("Sheet2").Cells(cursor, "A").Value Then 
       If Worksheets("Sheet1").Cells(j, "D").Value = Worksheets("Sheet2").Cells(cursor, "H").Value Then 
        Select Case Worksheets("Sheet1").Cells(j, "B") 
         Case "ACR" 
          Worksheets("Sheet2").Cells(cursor, "B") = Worksheets("Sheet1").Cells(j, "C") 
         Case "Microalbumin" 
          Worksheets("Sheet2").Cells(cursor, "C") = Worksheets("Sheet1").Cells(j, "C") 
         Case "eGFR" 
          Worksheets("Sheet2").Cells(cursor, "D") = Worksheets("Sheet1").Cells(j, "C") 
         Case "LDL_HDL_TotChol" 
          Worksheets("Sheet2").Cells(cursor, "E") = Worksheets("Sheet1").Cells(j, "C") 
         Case "HbA1C" 
          Worksheets("Sheet2").Cells(cursor, "F") = Worksheets("Sheet1").Cells(j, "C") 
         Case "UricAcid" 
          Worksheets("Sheet2").Cells(cursor, "G") = Worksheets("Sheet1").Cells(j, "C") 
        End Select 
       Else 
        cursor = cursor + 1 
        GoTo X 
       End If 
      Else 
       cursor = cursor + 1 
       GoTo X 
      End If 
     End If 
    Next 

End Sub 

私はこれが私のような他の誰かを助けることができると思います。

注:このプログラムを実行する前に、シート2のセルMESDATEをテキストとして設定する必要があります。それ以外の場合は、シート1のMSEDATEセルがDate型に変更されます。

0

Excelでテキストを列オプションにする。データリボンの下

1)エクセル

2)へのデータのコピーを選択し、データ

3) - >コラム

4)次

5をオプションDelimtedを選択し、クリックする選択テキスト)区切り文字としてスペースを選択(チェックボックスをオンにして)をクリックして次へをクリックします。

6)宛先を選択し、完了を押してください

Step1

Step2

Step3

Step4

関連する問題