gpt4 book ai didi

excel - 如何 VBA 选择一对工作表并将它们复制到新的 wb?

转载 作者:行者123 更新时间:2023-12-04 20:59:15 25 4
gpt4 key购买 nike

'第一次来这里,谢谢你的耐心!
我有一个包含多张工作表的工作簿,我需要:

1)选择工作表对(索引和索引+1)

2)将它们复制到新的工作簿中

3)用引用单元格中的任何标签重命名工作表(例如A1)

4)然后对工作簿中的每一对工作表重复(几十对)

由于我对 vba 很陌生(只上过一节课),我很容易感到困惑。到目前为止,我唯一的部分是引用单元格 A1 将工作表重命名为该单元格中的任何文本字符串。其余的我想不通。我认为它与 worksheet.index 或 worksheets(index) 以及某种循环有关,其中 index 添加 2 并在复制之前激活该工作表和下一个工作表:工作表 1 和 2,然后工作表 3 和 4 等.

Private Sub Worksheet_Calculate() 
Dim s As String
s = "sheet 1"
If Range("A1").Value <> "" Then
s = Range("A1").Value
End If
ActiveSheet.Name = s
End Sub

我理解它的方式,必须检查单元格 A1 以确保它不为空,因为您无法命名具有空值的工作表。在这一点上,其余部分的用法和语法完全超出了我的能力范围,但我真的很想学习并最终成为这个社区的贡献者。我的工作是全新的,只是兼职工作,所以给我的老板带来解决方案可能意味着我会成为永久的。因此,非常感谢!

最佳答案

Option Explicit

Private Sub Worksheet_Calculate()
Dim s As String
Dim ws As Worksheet
Dim wsi As Worksheet

Set wsi = Sheets("Sheet4")' You need to create a name for the sheet to paste into

For Each ws In ActiveWorkbook.Worksheets
If Not IsEmpty(ws.Range("A1")) and ws.name = "INDEXCOPY" Then
ws.Name = ws.Range("A1").Value
ws.Range("A1:" & ws.Range("A1").SpecialCells(xlCellTypeLastCell).Address).Copy _
Destination:=wsi.Range("A1")
End If
Next ws
End Sub

此代码将帮助您入门,但是,您需要一种方法来区分要从中复制的索引表和要复制到的索引表。您需要添加一个额外的 if then 语句,请参阅上面的评论。我会看这里 - http://www.rondebruin.nl/win/s3/win006.htm

关于excel - 如何 VBA 选择一对工作表并将它们复制到新的 wb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39802942/

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