2012-04-13 20 views
1

私はexcelで入力ファイルを与えられましたが、それは単に "M2"の列を下っています。入力ファイルを入れて次のようになります。Excelのデータ分割/割り当て

ru_utime  0.060    
ru_stime  0.140    
ru_maxrss 0       
ru_ixrss  0       
ru_ismrss 0       
ru_idrss  0       
ru_isrss  0       
ru_minflt 4124      
ru_majflt 0       
ru_nswap  0       
ru_inblock 0       
ru_oublock 0       
ru_msgsnd 0       
ru_msgrcv 0       
ru_nsignals 0       
ru_nvcsw  47174      
ru_nivcsw 4347      
================================================== 

あなたはそれが、次の束が区切られている同じ列の2ビットの情報を持って見ることができるように、それは同じフォーマット

では約1000 +回繰り返さby === 私がしたいことは、各ビットの見出しを無視し、右側の情報を取り、それらを互いに下の異なる列に移動することです。ファイルをダウン読みなどru_utimeの下ですべての情報を入れている私は何をしたい

0.060

accross異なる列の下のため、すべてのデータがダウンし、「M2」であり、私が撮りたいですそれに対応するタイトル情報をそれぞれのS2、T2、U2のように移動し、それがヒットすると、その次のもののためにそれを行います。それが誰にとっても意味があれば、本当に助けに感謝します。

目的は、ボタンのクリックで移動を超える自動化することで、感謝

が追加さ:

Sub incorperate() 
sn = Split(Join(Application.Transpose(Sheets("sheet2").Cells(1).CurrentRegion.Columns(1)), "|"), String(62, "=") & "|") 
With Sheets("sheet1").Cells(1).CurrentRegion 
st = .Rows(1).Offset(.Rows.Count).Resize(UBound(sn) + 1) 
End With 

For j = 0 To UBound(sn) 
sq = Split(sn(j), "|") 
For jj = 0 To UBound(sq) - 1 
    st(j + 1, jj + 1) = Split(sq(jj))(UBound(Split(Trim(sq(jj))))) 
Next 
Next 

Sheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(st), UBound(st, 2)) = st 
End Sub 
+1

をはいそれは容易に達成することができます。まだ何か試しましたか? –

+0

私は見てきましたが、見出しが列tに移動した後に何かを言う方法がわからないので、すべての見出し情報を移動して====をつけてから増やしてもう一度やり直してください。 – Zenaphor

+0

別の方法(多くの方法があります)? '.Find'と' .FindNext'を使って "======="を検索し、範囲をあなたが望むようにコピーするように設定してください。マクロを使って 'Copy'と' Pastespecial - Transpose'がどのように動作するのかを記録することができます。 2つのコードを組み合わせることで、必要なものが得られます。 '.Find'と' .FindNext'については、このリンクを参照してくださいhttp://siddharthrout.wordpress.com/2011/07/14/find-and-findnext-in-excel-vba/ –

答えて

1
Sub move() 
Dim x, y(), i&, j&, k&, s 

x = Range("S1", Cells(1, Columns.Count).End(xlToLeft)).Value 
With CreateObject("Scripting.Dictionary") 
    .CompareMode = 1 
    For i = 1 To UBound(x, 2) 
     .Item(x(1, i)) = i 
    Next i 

    x = Application.Trim(Range("M2", Cells(Rows.Count, "M").End(xlUp)).Value) 
    ReDim y(1 To UBound(x), 1 To .Count): j = 1 

    For i = 1 To UBound(x) 
     If InStr(x(i, 1), "==") = 0 Then 
      s = Split(x(i, 1)) 
      If .Exists(s(0)) Then 
       k = .Item(s(0)): y(j, k) = s(UBound(s)) 
      End If 
     Else 
      j = j + 1 
     End If 
    Next i 
End With 

[s2].Resize(j, UBound(y, 2)).Value = y() 
End Sub