2012-04-25 27 views
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#指的是一個視頻顯微圖框,並且斑點ID是指被跟蹤的特定膠體顆粒。 X Pos和Y Pos分別是X和Y座標。

任何幫助,非常感謝。

nan0guy

+0

Definte「很多這樣的數據」。這是一次性的事情嗎? – Marc 2012-04-25 23:02:24

+0

一個數據集中有多少個不同的「點ID」值? – 2012-04-25 23:16:52

+0

「很多」 - 正在跟蹤的可視化數據的GB,每個數據集產生數百個跟蹤。定期生成更多數據。這是一種統計力學現象(有偏布朗運動),所以數據越多,理解就越好。 – nan0guy 2012-04-26 11:43:39

回答

0

試試這個,它使用一個簡單的自動篩選得到的每一行與獨特的SPOT ID,它不會做onlyh就是保持......... ..排在中間,希望這實際上並不重要。

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 
+0

這很有效!謝謝。編輯評論以幫助我理解它 - 隨時糾正我。 – nan0guy 2012-04-26 14:04:37

+0

早些時候,宏循環並創建了唯一值的「集合」,稍後我們使用變量「ITEM」循環所創建的收集方法的LIST中的每個「項」。您的評論表明對發生的事情有完美的理解。 – 2012-04-27 04:32:38

+0

如果要查看使用SPECIALCELLS方法處理的所有選項,請在工作表中按F5並單擊右下角的SPECIAL按鈕。特殊的單元可以讓你根據特定的特性來分離一系列單元。在宏中,我們在列B中搜索所有數字常量,然後遍歷它們,每個將它們添加到「LIST」集合中。收集方法不會導致重複。 – 2012-04-27 04:35:57

相關問題