尝试从300个格式相同的工作表中编译一个列表。我想在这个摘要表上粘贴/插入值,这样在循环的每次迭代之后,新数据被放在下一个空行中,这样就有一个单独的“主列表”。我在“Summary.Cells”行中遇到“类型不匹配”错误,从底部开始是第4行。
Sub Compile()
Dim ws as Worksheet
Dim Summary as Worksheet
Set Summary = ThisWorkbook.Sheets("Sheet1")
For Each ws in ThisWorkbook.Sheets
If Not ws.Name = "Summary" Then
Summary.Cells(Rows.Count,1).End(xlUp).Row+1 = ws.Range("BB1:DO11").Value
End If
Next ws
End Sub
非常感谢任何帮助,谢谢,
答案 0 :(得分:3)
直接分配值时,范围必须相同。
您正在尝试将行号等同于数组。
N
将行号返回为Long而不是Range。
根据SJR的评论,获取我们使用的第一个单元格:
Summary.Cells(Rows.Count,1).End(xlUp).Row+1
然后我们需要将其大小调整为与输入范围相同的大小。
Summary.Cells(Rows.Count, 1).End(xlUp).Offset(1)
使用
Summary.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(11, 66).Value
答案 1 :(得分:3)
这几乎与斯科特的答案相同,所以如果你足够好接受一个,请接受他,但只是显示一种稍微不同的调整范围的方法。
Sub Compile()
Dim ws As Worksheet
Dim Summary As Worksheet
Set Summary = ThisWorkbook.Sheets("Sheet1")
For Each ws In ThisWorkbook.Sheets
If Not ws.Name = "Sheet1" Then 'I think this is right but may need to be 'Summary'
With ws.Range("BB1:DO11")
Summary.Cells(Rows.Count, 1).End(xlUp)(2).Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
End If
Next ws
End Sub