返回列表 上一主題 發帖

[發問] 相同格式的2個工作表合成一個(相異資料新增)

回復 1# pitera88
VBA輔助比較簡單
  1. Private Sub CommandButton1_Click()
  2. Dim Sh As Worksheet
  3. Set d = CreateObject("Scripting.Dictionary")
  4. For Each Sh In Sheets(Array("A", "B"))
  5.    With Sh
  6.       For Each a In .Range(.[B2], .[B2].End(xlDown))
  7.          d(a.Value) = a.Offset(, -1).Resize(, 4).Value
  8.       Next
  9.     End With
  10. Next
  11. With Sheets(3)
  12. .UsedRange.Offset(1).ClearContents
  13. .[A2].Resize(d.Count, 4).Value = Application.Transpose(Application.Transpose(d.items))
  14. .[A2].Resize(d.Count, 4).Sort key1:=.Cells(1, 1), Header:=xlNo
  15. End With
  16. End Sub
複製代碼
整理.rar (12.03 KB)
學海無涯_不恥下問

TOP

回復 4# pitera88

B工作表有資料就寫入B工作表,沒有的就以A工作表為準
  1. Private Sub CommandButton1_Click()
  2. Dim Sh As Worksheet, A As Range
  3. Set d = CreateObject("Scripting.Dictionary")
  4. For Each Sh In Sheets(Array("A", "B"))
  5.    With Sh
  6.       For Each A In .Range(.[B2], .[B2].End(xlDown))
  7.          If IsEmpty(d(A.Value)) Then
  8.             d(A.Value) = Application.Transpose(Application.Transpose(A.Offset(, -1).Resize(, 7).Value))
  9.             Else
  10.             ar = d(A.Value)
  11.             For i = LBound(ar) To UBound(ar)
  12.               If A.Offset(, -1).Resize(, 7).Cells(1, i) <> "" Then ar(i) = A.Offset(, -1).Resize(, 7).Cells(1, i).Value
  13.               d(A.Value) = ar
  14.             Next
  15.             End If
  16.       Next
  17.     End With
  18. Next
  19. With Sheets(3)
  20. .UsedRange.Offset(1).ClearContents
  21. .[A2].Resize(d.Count, 7).Value = Application.Transpose(Application.Transpose(d.items))
  22. .[A2].Resize(d.Count, 7).Sort key1:=.Cells(1, 1), Header:=xlNo
  23. End With
  24. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 口說一句好話,如口出蓮花;口說一句壞話如口吐毒蛇。
返回列表 上一主題