gpt4 book ai didi

vba - 将 Excel 电子表格合并到一个电子表格中

转载 作者:行者123 更新时间:2023-12-02 07:46:06 24 4
gpt4 key购买 nike

好吧,我试图寻找类似的问题,但我不太明白正在讨论的内容,因为这是我第一次查看 Excel 的 VBA 编辑器。

简单来说,我有 2 个电子表格:“Sheet1”和“Sheet2”

表 1:

    A         B
1 Header1 Header2
2 Text1 Info1
3 Text2 Info2

表 2:

    A         B
1 Header1 Header2
2 Text3 Info3
3 Text4 Info4

我想要一个宏来将两个工作表合并到一个新工作表(Sheet3)中,如下所示:

    A         B
1 Header1 Header2
2 Text1 Info1
3 Text2 Info2
4 Text3 Info3
5 Text4 Info4

我尝试录制宏并将其保存以供以后使用。为此,我创建了一个新工作表,将所有内容从 Sheet1 复制/粘贴到 Sheet3,然后将除标题之外的所有信息从 Sheet2 复制到 Sheet3。

嗯,宏适用于该数据,但我发现 Excel 生成的代码使其在粘贴数据之前选择单元格 A4(此处)。虽然这适用于该数据,但如果每张表中的记录数时常发生变化,则该方法将不起作用。基本上,

1) 我想知道是否有一个函数可以在粘贴下一组数据之前自动转到最后一个相关单元格(在本例中为单元格 A4,如果我还有一个表格,则为单元格 A6)。

2) 我见过函数“ActiveCell.SpecialCells(xlLastCell).Select”(当我使用 Ctrl+End 时激活),但它会将我带到工作表的末尾。在使用该功能后,我需要类似于“Home”和“Down”箭头键的东西才能使其发挥最佳效果。

这两个选项中的任何一个都适合我。 ^_^

这是我当前从 Excel 2010 中的宏记录器录制的 VBA 代码:

Sub Collate_Sheets()

Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Name = "Sheet3"
Sheets("Sheet1").Select
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Sheets("Sheet3").Select
ActiveSheet.Paste
ActiveCell.SpecialCells(xlLastCell).Select
' I need to select one cell below, and the cell in column A at this point
Sheets("Sheet2").Select
Range("A2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet3").Select
ActiveSheet.Paste
End Sub

我希望我没有忘记任何有用的信息。如果我这样做了请告诉我!

最佳答案

杰瑞,试试这个代码。我稍微清理了你的代码,使它更有效地能够做你想做的事情。我根据您的代码所说做了一些我认为正确的假设。如果没有,请对此答案发表评论,我会根据需要进行调整。

Option Explicit

Sub Collate_Sheets()


Sheets.Add After:=Sheets(Sheets.Count)
Dim wks As Worksheet
Set wks = Sheets(Sheets.Count)

wks.Name = "Sheet3"

With Sheets("Sheet1")

Dim lastrow As Long
lastrow = .Range("B" & .Rows.Count).End(xlUp).Row

.Range("A1:B" & lastrow).Copy wks.Range("A" & wks.Rows.Count).End(xlUp)

End With

With Sheets("Sheet2")

lastrow = .Range("B" & .Rows.Count).End(xlUp).Row

.Range("A2:B" & lastrow).Copy wks.Range("A" & wks.Rows.Count).End(xlUp).Offset(1)

End With


End Sub

关于vba - 将 Excel 电子表格合并到一个电子表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13686323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com