2015-07-20 111 views
1

我一直在試圖找出一種方法來將excel中的某些列轉換爲行,以實現我的結果。Excel Transpose - 基於單元格值

由於我需要的輸出是文本值,我一直無法使用數據透視表我的目的。這是附加的圖像,顯​​示我有什麼和我需要什麼。

任何有識之士將不勝感激!

enter image description here

+0

這不會是一個轉置,因爲你的元素在你的結果表中被使用。這是一個關閉過程還是定期完成的任務?你可以使用'MATCH'和'INDEX'來提取匹配你的聽衆的時間戳。 – nbayly

回答

0

請考慮以下解決方案按您的例子。

G3=IF(SUMIFS($C$4:$C$13,$A$4:$A$13,$F4,$B$4:$B$13,G$3)>0,SUMIFS($C$4:$C$13,$A$4:$A$13,$F4,$B$4:$B$13,G$3),"") 

這裏假設「Item ID」和「Scan Event ID」的每個組合只顯示一次。這使我們能夠使用SUMIFS函數加上唯一相關的結果。請注意,Excel根據該日期序列號添加它。

該if是爲了防止Excel顯示公式返回0並被解析爲實際日期。

然後,您將公式拖到輸出表的其餘部分。問候,

1

您沒有指定一個技術標籤,但我發現這些是最好的解決方案,只要你允許某些參數是動態的;例如根據原始數據的大小和性質分配。

Sub collate() 
    Dim rw As Long, rc As Long, rr As Long, r As Long, c As Long 

    With Sheets("Sheet2") '<-set this worksheet reference properly! 
     rr = Application.Match("item id", .Columns(1), 0) 
     rc = .Cells(rr, Columns.Count).End(xlToLeft).Column + 2 
     .Cells(rr, rc + 1) = .Cells(rr + 1, 2).Value2 

     For rw = rr + 1 To .Cells(Rows.Count, 1).End(xlUp).Row 
      If IsError(Application.Match(.Cells(rw, 1).Value2, .Columns(rc), 0)) Then 
       .Cells(Rows.Count, rc).End(xlUp).Offset(1, 0) = .Cells(rw, 1).Value2 
      End If 
      If IsError(Application.Match(.Cells(rw, 2).Value2, .Cells(rr, rc).Resize(1, 999), 0)) Then 
       .Cells(rr, Columns.Count).End(xlToLeft).Offset(0, 1) = .Cells(rw, 2).Value2 
      End If 

      r = Application.Match(.Cells(rw, 1).Value2, .Columns(rc), 0) 
      c = Application.Match(.Cells(rw, 2).Value2, .Rows(rr), 0) 
      .Cells(r, c) = .Cells(rw, 3).Value 
     Next rw 

     With .Cells(rr, rc).CurrentRegion 
      With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0) 
       .Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _ 
          Orientation:=xlTopToBottom, Header:=xlNo 
      End With 
      With .Resize(.Rows.Count, .Columns.Count - 1).Offset(0, 1) 
       .Cells.Sort Key1:=.Rows(1), Order1:=xlAscending, _ 
          Orientation:=xlLeftToRight, Header:=xlNo 
      End With 
     End With 

    End With 
End Sub 

在對您的數據進行大致的重複運行後,我想出了這些結果。

Collate and Sort

注意,我已明確改變,以證明對所得數據執行水平排序例程與亂序3005條目的數據。