gpt4 book ai didi

excel - 根据另一个工作簿行的编号复制和粘贴

转载 作者:行者123 更新时间:2023-12-04 22:21:53 25 4
gpt4 key购买 nike

我有两个名为 "main"和 "temp"的工作簿。在工作簿“temp”中,我有 2 张纸。我想编写一个宏,在从 A1 到 A1000 的循环中,从工作簿“temp”表“1”中的工作簿“main”中搜索单元格 A(x,1) VALUE,如果找到它,则复制并粘贴工作簿中的整行“临时”表“2”。我写下面的代码。但存在两个问题:

1-我想根据工作簿“主”行号而不是工作簿“临时”行号复制工作簿“临时”工作表 2 中的工作簿“临时”工作表 1 中的整行。我的意思是如果 text:book 在工作簿“main”的 A(1,1) 单元格中,并在工作簿“temp”的 A(9,1) 中找到它。sheet1 复制其整行并将其粘贴到第 1 行的 sheet2 中第 9 行。

2-我在工作簿“temp”中编写宏并有一个按钮来运行此宏-但是当我在 sheet2 中时,宏不能正常工作,但当我在 sheet1 中时,它运行良好。

请帮我找出问题...谢谢

Sub sorting()
Dim coname As String
Dim counter As Integer
Dim cell As Range

For counter = 1 To 1000
coname = Workbooks("main").Worksheets("statics").Cells(counter, 1)
With Workbooks("temp").Worksheets(1)
For Each cell In Range("a1", Range("a1").End(xlDown))
If cell.Value = coname Then
Rows(cell.Row).Copy Destination:=Workbooks("temp").Sheets(2).Rows(cell.Row)
End If
Next cell
End With
Next counter

End Sub

最佳答案

1.

我会改变 coname成为 Range数据类型( Dim coname As Range ),然后稍微更改您的代码,如下所示:

If cell.Value = coname.Value Then
coname.EntireRow.Copy Destination:=Workbooks("temp").Sheets(2).cell
End If

通过更改数据类型,我们现在可以使用 EntireRow property 引用正确的行(在正确的工作表上)。的 coname范围对象。

以前您得到错误的行,因为您的源数据使用 Cell.Row属性来获取要复制的行,但这是您的目标引用,因此将其更改为 coname现在将源数据指向正确的范围。

2.

对您的工作簿/工作表使用明确的限定条件!目前,您从哪里调用代码的问题是由于这一行: For Each cell In Range("a1", Range("a1").End(xlDown)) .

因为你还没有领导 Range()引用 . ,它没有使用 With声明它在里面!所以它转换为 ActiveSheet.Range("A1"...) .放一个 .在 Range 前面使用您的 With声明,它将是 Workbooks("temp").Worksheets(1).Range("A1"...) .

之后,无论您在何处/如何调用代码都无关紧要,它将始终引用正确的工作表!

关于excel - 根据另一个工作簿行的编号复制和粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62173176/

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