1

我有一个数据日志列表,其中前两列作为潜在标识符,如 Flickr 上的图像中的缩短形式所示(noobie - 无法发布图片):

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

我已经根据 B 列的值进行了排序。我希望能够将这组长数据拆分为四列的单独列表,其中一个列表包含一个“Spot ID”,如下所示:

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

A 列“Frame #”并不重要,但我把它留在里面是因为我想知道它是否可以用来使宏更容易运行。

我必须处理很多这样的数据,所以我想了解如何修改宏以将单独的列表发送到不同的工作表,而不是不同的列。

如果您想知道,Frame # 指的是视频显微照片帧,spot ID 指的是被跟踪的特定胶体粒子。X Pos 和 Y Pos 分别是 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 回答