【问题标题】:copy sheet content to another sheet将工作表内容复制到另一个工作表
【发布时间】:2017-09-14 01:46:30
【问题描述】:

我想将一张纸的内容复制到另一张纸的末尾,我试过这个 vba 代码,它可以工作,

Private Sub CommandButton1_Click()
Sheets("B").Select
Range("A1:H14").Select
Range("A1:H14").Copy

Sheets("A").Select
' Find the last row of data
Range("B48:I48").Select
ActiveSheet.Paste
Sheets("A").Select
End Sub

但我想要的是复制而不必指定数据的范围,因为我有很多文件和许多数据,并且很难手动完成所有这些并每次更改范围。

【问题讨论】:

  • 是的,确实很难。因此 VBA 提供了变量的概念。在这里了解它们。 vbtutor.net/lesson6.html 或者,也许,这里是 stackoverflow.com/questions/12199318/…
  • 如果不指定单元格,应该复制哪些单元格?是否要将所有单元格复制到另一张工作表?
  • @ErdemAkkas 是的,我想将所有单元格复制到另一张纸上,如果我不指定范围,它会给我一个错误。

标签: vba excel


【解决方案1】:

我通常会这样做,假设 sheet1 是要由 sheet2 中的数据更新的工作表;

dim destLen as Long 'rows used in sheet 1
dim sourceLen as Long 'rows used in sheet 2

用源文件打开目录并遍历每个文件并执行以下操作

destLen = Sheet1.Range("A"&Rows.Count).End(xlUp).Row
sourceLen = Sheet2.Range("A"&Rows.Count).End(xlUp).Row
Sheet2.Range("B1" & ":I" & sourceLen).copy
Sheet1.Range("A" & destLen + 1).pasteSpecial xlValues
Application.CutCopyMode = False

【讨论】:

  • 没错,我的错误,我已经纠正了。这个想法主要是为了展示如何获得最后一行。有诸如 usedrange 之类的替代方法,但我发现它有点不可预测,到目前为止,上述方法对我来说已经解决了
【解决方案2】:

下面会将Sheet B中的全部内容复制到Sheet A

Sheets("B").Cells.Copy Destination:=Sheets("A").Range("A1")

复制时无需选择单元格。

【讨论】:

  • 这实际上覆盖了工作表(A)中的数据
【解决方案3】:

没必要用那么多Select,会拖慢代码,可以用下面的1行将Sheet("B")的全部内容复制到Sheet("A")的“A”列第一个空行.

Dim Rng             As Range
Dim lRow            As Long
Dim lCol            As Long
Dim lPasteRow       As Long

With Sheets("B")

    lRow = .Cells.Find(What:="*", _
                Lookat:=xlPart, _
                LookIn:=xlFormulas, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlPrevious, _
                MatchCase:=False).Row

    lCol = .Cells.Find(What:="*", _
                Lookat:=xlPart, _
                LookIn:=xlFormulas, _
                SearchOrder:=xlByColumns, _
                SearchDirection:=xlPrevious, _
                MatchCase:=False).Column

    lPasteRow = Sheets("A").Cells.Find(What:="*", _
                Lookat:=xlPart, _
                LookIn:=xlFormulas, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlPrevious, _
                MatchCase:=False).Row

    .Range(.Cells(1, 1), .Cells(lRow, lCol)).Copy Destination:=Sheets("A").Range("A" & lPasteRow + 1)
End With

【讨论】:

  • 这就像一个魅力,我有一个问题,我应该改变什么来使用另一个文件中的工作表并复制它?
  • @zenami 你指的是Sheets("B") 吗?或Sheets("A")?
  • 我想将 sheet(1) 的内容从 file1 复制到 sheet(1) 从 file2,而不覆盖现有数据
  • @zenami 等我回家看看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多