gpt4 book ai didi

excel - 使用相对引用

转载 作者:行者123 更新时间:2023-12-04 20:29:10 26 4
gpt4 key购买 nike

作为 VBA 的新手,我希望对这段代码进行一些输入,以提高它的速度……目前感觉不是那么“VBA”;但是代码的“结果”是正确的......

Sub Rigtig()

Set Marketshare = Sheets("Output").Range("p40:p50")
'Select.
Sheets("Output").Select
Cells(38, 17).Copy
Sheets("Input").Select
Cells(33, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues

Sheets("Output").Select
Marketshare.Cells(1, 1).Copy
Sheets("Input").Select
Cells(23, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues
Sheets("Output").Select
Cells(40, 17).Copy
Cells(40, 17).Select
Selection.PasteSpecial Paste:=xlPasteValues
Marketshare.Cells(2, 1).Copy
Sheets("Input").Select
Cells(23, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues
Sheets("Output").Select
Cells(41, 17).Copy
Cells(41, 17).Select
Selection.PasteSpecial Paste:=xlPasteValues
Marketshare.Cells(3, 1).Copy
Sheets("Input").Select
Cells(23, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues


Sheets("Output").Select
Cells(38, 18).Copy
Sheets("Input").Select
Cells(33, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues

Sheets("Output").Select
Marketshare.Cells(1, 1).Copy
Sheets("Input").Select
Cells(23, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues
Sheets("Output").Select
Cells(40, 18).Copy
Cells(40, 18).Select
Selection.PasteSpecial Paste:=xlPasteValues

Sheets("Output").Select
Cells(38, 19).Copy
Sheets("Input").Select
Cells(33, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues

Sheets("Output").Select
Marketshare.Cells(1, 1).Copy
Sheets("Input").Select
Cells(23, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues
Sheets("Output").Select
Cells(40, 19).Copy
Cells(40, 19).Select
Selection.PasteSpecial Paste:=xlPasteValues
Marketshare.Cells(2, 1).Copy
Sheets("Input").Select
Cells(23, 28).Select
Selection.PasteSpecial Paste:=xlPasteValues

我想在行中执行相同的“复制粘贴”大约 10 次,然后更改列。

提前致谢

最好的

瓦尔德马尔

最佳答案

正如@Glitch_Doctor 所说 - 如果它只是你所追求的值,你可以这样做“这个单元格=那个单元格”而不是复制/粘贴。

为了缩短您的代码并使其更像“VBA”,您可以将您的单元格引用对放入一个数组并逐步遍历该数组:

Sub Test()

Dim vAddresses As Variant
Dim vRef As Variant

vAddresses = Array( _
Array("Q38", "AB33"), _
Array("A1", "AB23"))

For Each vRef In vAddresses
Worksheets("Input").Range(vRef(1)) = Worksheets("Output").Range(vRef(0))
Next vRef

End Sub

您也可以使用 With...End With block ,因此您不必每次都使用工作表名称:
Sub Test1()

With Worksheets("Output")
Worksheets("Input").Cells(33, 28) = .Cells(38, 17)
End With

End Sub

如果要复制所有内容(公式、格式),请在一行中使用复制和粘贴:
Sub Test2()

With Worksheets("Output")
Worksheets("Input").Cells(33, 28).Copy Destination:=.Cells(38, 17)
End With

End Sub

关于excel - 使用相对引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53335006/

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