gpt4 book ai didi

vba - 在Excel中复制格式的快速方法

转载 作者:行者123 更新时间:2023-12-02 11:08:39 25 4
gpt4 key购买 nike

我有两段代码。首先从单元格 A 到单元格 B 进行标准复制粘贴

Sheets(sheet_).Cells(x, 1).Copy Destination:=Sheets("Output").Cells(startrow, 2)

我可以使用几乎相同的方法

Sheets("Output").Cells(startrow, 2) = Sheets(sheet_).Cells(x, 1)

现在第二种方法要快得多,避免复制到剪贴板并再次粘贴。但是,它不会像第一种方法那样复制格式。第二个版本几乎可以即时复制 500 行,而第一个方法增加了大约 5 秒的时间。最终版本可能会超过 5000 个单元。

所以我的问题是可以更改第二行以包含单元格格式(主要是字体颜色),同时仍然保持快速。

理想情况下,我希望能够将单元格值与字体格式一起复制到数组/列表中,以便在将它们“粘贴”回工作表之前可以对它们进行进一步的排序和操作。

所以我理想的解决方案是这样的

for x = 0 to 5000
array(x) = Sheets(sheet_).Cells(x, 1) 'including formatting
next

for x = 0 to 5000
Sheets("Output").Cells(x, 1)
next

是否可以在 VBA 中使用 RTF 字符串,或者只能在 vb.net 等中使用。

回答*

只是为了看看我的原始方法和新方法如何比较,这是前后的结果

新代码 = 65 毫秒

Sheets("Output").Cells(startrow, 2) = Sheets(sheet_).Cells(x, 1)
Sheets("Output").Range("B" & startrow).Font.ColorIndex = Sheets(sheet_).Range("A" & x).Font.ColorIndex 'copy font colour as well

旧代码 = 1296 毫秒

'Sheets("Output").Cells(startrow, 2).Value = Sheets(sheet_).Cells(x, 1)
'Sheets(sheet_).Cells(x, 1).Copy
'Sheets("Output").Cells(startrow, 2).PasteSpecial (xlPasteFormats)
'Application.CutCopyMode = False

最佳答案

您可以简单地使用Range("x1").value(11)如下所示:

Sheets("Output").Range("$A$1:$A$500").value(11) =  Sheets(sheet_).Range("$A$1:$A$500").value(11)

range 有默认属性“Value”,并且 value 可以有 3 个可选参数 10、11、12。11 是您传输值和格式所需的。它不使用剪贴板,因此速度更快。- Durgesh

关于vba - 在Excel中复制格式的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617162/

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