我的主要表格被命名为“主要摘要”。这张表有三列。
其他表被命名为“Salman”,“Rehman”和“Islam”。 每张纸都有一张桌子。该表有5列,末尾有一行。
我正在尝试将“客户名称”列中的名称与工作表进行匹配,然后将表格总行的最后一个单元格与客户名称链接到未结余额列。
这是我到目前为止所尝试的内容:
Sub CopyRows()
Dim bottomD As Integer
bottomD = Range("D" & Rows.Count).End(xlUp).Row
Dim c As Range
Dim ws As Worksheet
For Each c In Sheets("all").Range("D2:D" & bottomD)
For Each ws In Sheets ws.Activate
If ws.Name = c Then
c.EntireRow.Copy Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End If
Next ws
Next c
End Sub
答案 0 :(得分:0)
如果我理解正确,那么你的解决方案就是不必要的迭代。此外,您的解释并不完全符合您的代码。您在问题中引用Column B
,代码会查看Column D
。您还可以讨论名为Main Summary
的代码表和代码引用all
你循环遍历所有单元格,然后是工作表,实际上你可以声明工作表并使用一个循环
Option Explicit
Sub CopyRows()
Dim ws As Worksheet
Dim all As Worksheet
Dim rng As Range
Dim c As Range
Set all = ThisWorkbook.Sheets("Main Summary")
With all
Set rng = Range("D2:D" & .Range("D" & Rows.Count).End(xlUp).Row)
End With
For Each c In rng
' By using error handling you can avoid using a second loop
On Error GoTo ContinueLoop
Set ws = Sheets(c.Value)
On Error GoTo 0
c.Offset(0, 1).Formula = "=" & ws.ListObjects(1).Name & "[[#Totals],[Balance]]"
ContinueLoop:
Next c
End Sub