1

Flickrの画像に短縮形で示されているように、最初の2列を潜在的な識別子として含むデータのログリストがあります(noobie-写真を投稿できません):

http://farm8.staticflickr.com/7036/7114053281_30bf57300d.jpg

すでに列Bの値に基づいて並べ替えています。この長いデータセットを、次のように1つの「スポットID」を含む1つのリストで4つの列の別々のリストに分割できるようにしたいと思います。

http://farm9.staticflickr.com/8160/6967974902_7f84b57e46.jpg

列Aの「フレーム番号」は重要ではありませんが、マクロを実行しやすくするために使用できるかどうか疑問に思ったので、そのままにしておきました。

このように多くのデータを処理する必要があるため、マクロを変更して、たとえば、異なる列ではなく、異なるシートに個別のリストを送信する方法を理解したいと思います。

ご参考までに、フレーム番号はビデオ顕微鏡写真フレームを指し、スポットIDは追跡された特定のコロイド粒子を指します。XPosとYPosは、それぞれX座標とY座標です。

どんな助けでも大歓迎です。

nan0guy

4

1 に答える 1

0

これを試してみてください。単純なAUTOFILTERを使用して、一意のSPOT IDを持つ各行を取得します。実行しないのは、... ... .... ...行を中央に保持することだけですが、そうでないことを願っています。実際に重要です。

Option Explicit

Sub SplitColumns()
Dim c As Range, wsNEW As Worksheet, NC As Long, LR As Long
Dim List As New Collection, Item As Variant

With ActiveSheet
    .AutoFilterMode = False       // turn autofilter off
    LR = .Range("A" & .Rows.Count).End(xlUp).Row        //count cells in A 

    On Error Resume Next        //on error, continue on next line
    For Each c In .Range("B:B").SpecialCells(xlConstants, xlNumbers) //Help here?
        //doing something to the values in column B (the Spot IDs)
        List.Add c.Value, CStr(c.Value)        //Make a list of values in column A in c
    Next c        //For-next loop
    On Error GoTo 0

    .Rows(1).AutoFilter        //turn autofilter on?
    Set wsNEW = Sheets.Add        //add a new sheet
    NC = 1        //counter for columns in new sheet

    For Each Item In List        //exactly, but where does Item come from?
        .Rows(1).AutoFilter Field:=2, Criteria1:=Item //autofilter using Item as criteria
        .Range("B1:D" & LR).Copy wsNEW.Cells(1, NC)  //copy everything in the range to new column in new sheet
        NC = NC + 3        //iterate column by 3
    Next Item        // for-next loop

    .AutoFilterMode = False        // turn autofilter off
End With

End Sub
于 2012-04-26T02:27:02.950 に答える