2014-01-20 29 views
-1

我有一個的Excel文件其中有一排密鑰標識符和其他行相關的數據。結合數據來做出一個完整的記錄

我需要合併數據才能創建有意義的報告。

下面是一個數據的例子,以及我最終會喜歡它的樣子。

當前數據格式:

  • 行1:鮑勃史密斯
  • 行2:數據鮑勃在於不需要
  • 行3:鮑勃的總數(例如,約鮑勃數據所需要)
  • 第4列:-blank
  • 行5:Jane Doe的
  • 第6行:數據約簡爲不需要
  • 第7行:不需要Jane的數據
  • 第8行:Jane's Totals(例如,所需的數據)

而且這是我所需要的最終產品看起來像這樣的名稱,只在每行總計行:

  • 行1:鮑勃·史密斯& Bob的合計
  • 行2:李四&簡氏總計
+0

請澄清以下內容:在個人的名字,是否有一個標識符的種類,即。 '姓名:','員工姓名:'等等?在個人總數中,是否還有各種標識符?如果你能提供它們,這會讓事情變得更簡單。 – Manhattan

+0

對不起,一張圖片勝過千言萬語,我無法發佈一張。在此人的名字之前,它實際上是在該行的同一字段中讀取「Agent:Bob Smith」。 「總計」行顯示「彙總」,後跟與Bob有關的數據單元格。電子表格大約有400行,包含不同人的信息。最後,我希望每個人都有一行數據(例如每月的結果)。那有意義嗎? – user3216659

+0

這是綽綽有餘。我希望獲得關鍵字,因爲這很重要。我希望你對VBA感到滿意,因爲這可能會有點複雜。 :)現在將創建模擬數據。 – Manhattan

回答

0

讓我們假設「鮑勃·史密斯」是A1和「鮑勃的彙總」是A3。

如果您需要在組合的數據和一個細胞(可以說A10),然後

Private Sub abc() 

Worksheets("Nameofyoursheet").Range("A10").Value = Worksheets("Nameofyoursheet").Range("A1").Value & " " & Worksheets("Nameofyoursheet").Range("A3").Value 

End Sub 

同樣,你可以去爲「簡」 &「簡氏總計」

你做同樣的可以修改& " " &部分代碼以包含任何您想要介入的文本,例如& " the totals are" &

希望這是您要查找的內容。

0

我的方法非常簡單和直接。邏輯如下:

  • 將表格複製到名爲Dummy的新工作表中以確保安全。
  • 刪除所有不需要的行。我們用AgentTotals(這就是我要求提供關鍵字的原因)保留所有內容。
  • 迭代新行並將總行復制並粘貼到名稱旁邊的單元格。

設置:

enter image description here

後前兩個步驟:

enter image description here

整個代碼完成之後:

enter image description here

代碼如下:因此

Sub WeirdConsolidate() 

    Dim SourceSh As Worksheet, DummySh As Worksheet 
    Dim DummyLastRow As Long, NewLastRow As Long 
    Dim Iter As Long, Iter2 As Long 

    With ThisWorkbook 
     Set SourceSh = .Sheets("Sheet1") 
     SourceSh.Copy After:=.Sheets(Sheets.Count) 
     Set DummySh = ActiveSheet 
    End With 

    With DummySh 

     Application.ScreenUpdating = False 

     .Name = "Dummy" 
     DummyLastRow = .Range("A" & Rows.Count).End(xlUp).Row 

     For Iter = DummyLastRow To 1 Step -1 
      If InStr(1, .Range("A" & Iter).Value, "Totals") = 0 And _ 
       InStr(1, .Range("A" & Iter).Value, "Agent") = 0 Then 
       .Rows(Iter).EntireRow.Delete 
      End If 
     Next Iter 

     NewLastRow = .Range("A" & Rows.Count).End(xlUp).Row 

     For Iter2 = 2 To NewLastRow 
      .Range("B" & Iter2 & ":D" & Iter2).Copy .Range("B" & (Iter2 - 1)) 
      .Rows(Iter2).EntireRow.Delete 
     Next Iter2 

     Application.ScreenUpdating = True 

    End With 

End Sub 

修改參數。讓我們知道這是否有幫助。

+0

這看起來很完美。非常感謝您的幫助和快速響應! – user3216659

+0

@ user3216659:請將答案標記爲已接受。這就是我們如何在SO中表示感謝。 – Manhattan

相關問題