我的方法非常簡單和直接。邏輯如下:
- 將表格複製到名爲
Dummy
的新工作表中以確保安全。
- 刪除所有不需要的行。我們用
Agent
或Totals
(這就是我要求提供關鍵字的原因)保留所有內容。
- 迭代新行並將總行復制並粘貼到名稱旁邊的單元格。
設置:
後前兩個步驟:
整個代碼完成之後:
代碼如下:因此
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
修改參數。讓我們知道這是否有幫助。
請澄清以下內容:在個人的名字,是否有一個標識符的種類,即。 '姓名:','員工姓名:'等等?在個人總數中,是否還有各種標識符?如果你能提供它們,這會讓事情變得更簡單。 – Manhattan
對不起,一張圖片勝過千言萬語,我無法發佈一張。在此人的名字之前,它實際上是在該行的同一字段中讀取「Agent:Bob Smith」。 「總計」行顯示「彙總」,後跟與Bob有關的數據單元格。電子表格大約有400行,包含不同人的信息。最後,我希望每個人都有一行數據(例如每月的結果)。那有意義嗎? – user3216659
這是綽綽有餘。我希望獲得關鍵字,因爲這很重要。我希望你對VBA感到滿意,因爲這可能會有點複雜。 :)現在將創建模擬數據。 – Manhattan