在 VBA 中复制粘贴数据的“正确”方法是什么?

2023-12-31

在 Excel 中复制粘贴 VBA 数据的“正确”方法是什么?

现在,至少据我所知,这三种是唯一可用的方法:

  1. the (Range) .Copy([Destination]) https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-copy-method-excel

这与可读性或您输入的字符数量无关。是关于你需要实现什么.

换句话说,它绝对不是主观的或基于观点的,就像编程中的几乎所有其他事情一样......

#这取决于。

If you're using Excel and copy-pasting cells around, do you Ctrl+C and Ctrl+V or use paste special?

取决于你需要做什么。

  • If you mean to copy a cell, its value, formats, data validations, borders, etc.; then .Paste [Destination] is your best friend. That's the programmatic equivalent of Ctrl+C/Ctrl+V... Equivalent to PasteSpecial/All, which is overkill since .Paste [Destination] already does everything you need it to do in this case.

    单元格引用是完全不行的!

    绝对地。硬编码的单元格引用是不好的。.Paste [Destination]无论如何,它不会强迫你这样做,所以这一点毫无意义。

    如果范围重叠,它将显示一条提示,有效地阻止宏在其轨道上停滞不前

    复制和粘贴范围不能重叠,句号。您将收到该提示.PasteSpecial too.

  • 如果您想复制单元格的Value, but not其格式、数据验证、边框等;然后.PasteSpecial绝对是一个更好的主意,因为这相当于粘贴特殊/值- 除了分配单元格可能更有效Value与你想要的(无需往返剪贴板);奥托如果你do意味着粘贴格式,或数据验证,或其他什么,那么这可能是最简单的方法。

Paste不会“搞乱”格式。它完全按照它的意思去做。Paste and PasteSpecial are not等价物。使用适合工作的正确工具。它们实际上分别相当于“粘贴”和“选择性粘贴”的编程等价物 - 如果您在 Excel 中并系统地进行“选择性粘贴”,您将完成您的工作。但每次你这样做来“粘贴所有”时,你都比你需要的更加努力。

PasteSpecial看起来像一把好锤子,但并非所有东西都是钉子。当您可以避免剪贴板写入时,通常最好避免它......但话又说回来,如果您正在处理巨大的数据集 https://stackoverflow.com/a/45020388/1188513(想想 100K+ 单元格),它的性能可能比仅仅分配值更好。

那是说:

@ScottCraner我确实考虑过,但这并不是真正的复制粘贴,而是更多的典型指针引用,因此我决定不将其包含在我的问题中。我不想打开一本书来讨论“什么算作复制粘贴”。

那是错的。.Range(foo).Value = .Range(bar).Value不是“典型的指针引用”。它实际上是取以下值foo到 2D 变量数组中,并将该 2D 变量数组转储到bar,覆盖之前保存的值。因此,它绝对是敲击剪贴板的完全有效的替代方案 - 但您需要测试并比较Copy+PasteSpecial看看这是否是适合您情况的最佳(/最有效)解决方案:

Testing with 1500000 cells (100000 rows)
Pasting from clipboard, single operation: 324.21875ms
Setting cell values, single operation:    1496.09375ms


Testing with 150 cells (10 rows)
Pasting from clipboard, single operation: 11.71875ms
Setting cell values, single operation:    3.90625ms
Pasting from clipboard, iterative:        1773.4375ms
Setting cell values, iterative:           105.46875ms
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VBA 中复制粘贴数据的“正确”方法是什么? 的相关文章

  • VBA中的字符串是可以迭代的数组吗?

    VBA中字符串是数组吗 例如 我可以像在 C C 中那样迭代它吗 做这样的事情 char myArray 10 for int i 0 i lt length i cout lt lt myArray i VBA 中的等价物是什么 它的行为
  • Excel工作簿关闭后反复打开

    我使用了 Application ontime 方法来调度一些宏 关闭工作簿后 它会一次又一次地打开 为了解决这个问题 我在工作簿上设置了另一个事件 BeforeClosed 现在它显示运行时错误 1004 Object Applicati
  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 为什么 Delphi 中的 ADO Next 记录处理速度变慢?

    我有一个多年前开发的 Delphi 4 程序 它使用Opus 直接访问 http sourceforge net projects directaccess 按顺序搜索 Microsoft Access 数据库并检索所需的记录 Delphi
  • 为什么列表理解在数组相乘方面比 numpy 快得多?

    最近我回答了THIS https stackoverflow com questions 31596979 multiplication between 2 lists 31597029 31597029想要两个列表相乘的问题 一些用户建议
  • 如何检查设备是否“快”足够

    我找不到更好的措辞来回答我的问题 在我的应用程序中的某个时刻 我设置了一些非常密集的动画 事实是 在高端设备上 动画运行流畅且赏心悦目 另一方面 我测试的一款低端设备在制作动画时的性能非常糟糕 为了将用户体验放在第一位 我想在计算能力足够的
  • 如何提高包含大量小图像的 UCollectionView 的性能?

    在我的 iOS 应用程序中我有UICollectionView显示大约 1200 个小 35x35 点 图像 图像存储在应用程序包中 我正确地重用了UICollectionViewCell但仍然存在性能问题 具体取决于我处理图像加载的方式
  • getItem 与 getItemAtPosition

    有两种方法可以获取列表视图中的选定项目 list getAdapter getItem position list getItemAtPosition position 我的问题是 哪一种是首选的做法 我见过人们同时使用这两种方法 您可以使
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • 使用宏打开受信任文档或启用宏时 Excel 崩溃

    正如标题所示 我无法使用宏打开受信任的文档 Excel 立即崩溃 制作文档的副本允许其打开 因为该副本不受信任 并且我可以检查 VB 编辑器中的宏 但启用宏会导致另一次崩溃 为什么会发生这种情况以及我可以采取什么措施来解决它 我今天遇到了类
  • Excel 2013 数据透视表不会更改当前页面,除非手动导航到

    我们有一小段 VBA 代码 多年来一直完美运行 本质上是 Me PivotTables APivot PivotFields AField CurrentPage Some text 这种方法一直有效 直到 Excel 2013 该行将失败
  • 使用 React.forwardRef 与自定义 ref prop 的价值

    我看到React forwardRef从反应文档来看 似乎是将引用传递给子功能组件的认可方式 const FancyButton React forwardRef props ref gt
  • 替换字符串变量中的多个字符 (VBA)

    如何替换字符串变量中的多个内容 这是我在 VBA 中的示例函数 Private Function ExampleFunc ByVal unitNr As String If InStr unitNr OE gt 0 Then unitNr
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • VBA Excel:将范围值分配给新范围

    我在将一个工作簿范围中的值分配给当前工作簿中的某个范围时遇到问题 当我使用 Range A1 C1 分配我的范围时 此代码工作正常 但是当我使用 Range Cells 1 1 Cells 1 3 定义我的范围时 该函数会失败 Sub Co
  • 将 Excel 文件读入 R 并锁定单元格

    我有一个 Excel 电子表格要读入 R 它受密码保护并锁定了单元格 我可以使用 excel link 导入受密码保护的文件 但我不知道如何解锁 取消保护单元格 excel link 给了我这个错误 gt
  • 如何修复日期过滤器 VBA,因为它没有拾取我范围内的所有日期

    我正在尝试创建一个过滤器来过滤掉我选择的日期内的所有日期 我选择的日期将始终反映整个月 例如 如果我需要 2019 年 5 月的数据 我将输入开始日期为 01 05 2019 结束日期为 31 05 2019 我的数据过滤器将需要选取经过我
  • 如何清除 APC 缓存而不使 Apache 崩溃?

    如果 APC 存储大量条目 清除它们会导致 httpd 崩溃 如果 apc clear cache user 花费的时间超过 phps max execution time 调用 apc clear cache 的脚本 将在之前被 php

随机推荐

  • 匿名闭包不能在具有显式参数的闭包内使用

    smb 能否解释一下问题是什么 我应该如何修改我的代码 我需要过滤CKRecords 返回自CloudKit override func tableView tableView UITableView moveRowAtIndexPath
  • 简单的 MIPS 汇编 - 返回斐波那契数

    我正在尝试创建一个简单的汇编代码 它接受输入 N 并返回第 N 个斐波那契数 例如 如果您输入 2 它应该输出 1 如果您输入 3 它应该输出 2 我的代码不会抛出任何错误 但是在输入数字后它会返回一些奇怪的东西 如果输入 1 则返回 26
  • oracle sql 中的迄今为止的字符

    下面的SQL有什么错误 select to Date substr 2 22 2015 9 20 06 AM 1 9 mm dd yyyy DD MON YY from dual 我收到以下错误 ORA 12702 SQL 函数中使用的 N
  • Numpy 矩阵减法混乱

    我对我意外使用两个 numpy 矩阵执行的操作的结果有疑问 后来修复 假设我有一个列向量 A 1 2 3 和一个行向量 B 1 1 1 据我所知 没有正确的数学方法来 减去 这两个向量 即这应该是一个未定义的操作 然而 当我这样做时 我得到
  • 如何让脚本查看电子表格中的某个工作表?

    我正在尝试从电子表格发送电子邮件 该脚本从电子表格内的工作表中获取电子邮件和电子邮件正文 当这张表是第一张表时 脚本工作正常 但是 由于我不会详细说明的原因 我需要先使用另一张纸 我尝试过使用 var ss SpreadsheetApp g
  • 使用 gcloud 和 kubectl 切换 GCP 帐户和上下文不起作用

    我有 2 个 Gmail 帐户 每个帐户都与 2 个独立的 GCP 帐户关联 要从命令行切换帐户 我在过去两周左右的时间里一直在使用这两个命令 gcloud config configurations activate ACCT NAME
  • OS X 是否有相当于 lsusb 的工具

    这个问题似乎遍布谷歌 但答案都指向使用 System Profiler 这很好 但是使用 System Profiler 您得到的只是如下所示的内容 DasKeyboard Product ID 0x1919 Vendor ID 0x04d
  • Bootstrap 3 / CSS:如何在面板标题中正确垂直对齐

    我使用 Bootstrap 3 创建具有如下结构的面板 并且希望垂直对齐面板标题内的跨度 而不扩展面板标题的默认高度 我尝试了不同的方法 添加class clearfix 添加style vertical align middle impo
  • 规避 sed 反向引用限制 \1 到 \9

    sed 手册明确指出 可用于替换中的替换字符串的可用反向引用编号为 1 到 9 我正在尝试解析一个包含 10 个字段的日志文件 我已经为其形成了正则表达式 但第十个匹配项 以及之后的任何内容 无法访问 有没有人有一种优雅的方法来规避 KSH
  • 如何获取sql server中可能包含特殊字符的列

    我遇到的情况是名称列包含许多特殊字符 我有一个解决方案 我喜欢像这样提到的所有特殊字符 但我认为这并不是解决问题的好办法 有没有一种方法可以在 SQL 查询本身中使用正则表达式来检查名称列是否包含特殊字符 特殊字符是除了字母和数字之外的所有
  • 使用 bash 逐个读取 zip 文件中的文件

    我想打开 zip 文件中的文件并读取它们 在这个 zip 文件中 我有许多 gz 文件 例如 a dat gz b dat gz 等 到目前为止我的代码 for i in unzip p sample zip do for line in
  • 基于 OSI 模型,数据包如何通过 Internet 从一台计算机传输到另一台计算机

    我熟悉基本的 OSI 模型 但我总是感到困惑 数据包如何通过 Internet 从一台机器传输到另一台机器以及哪些 OSI 层会出现 例如 对于以下拓扑 机器A交换机路由器路由器路由器交换机机器B 其中多个路由器代表互联网 当机器 A 向机
  • 如何让 Maven 使用与 JDK 中不同的 JAXB 库

    我正在使用 java 1 6 0 14 其中包含注释的实现javax xml bind annotation XmlElement 然而JDK中的仅适用于Method和Field 我发现 jaxb api jar 版本 2 2 3 也允许在
  • asp web api补丁实现

    假设我有这个模型 public partial class Todo public int id get set public string content get set public bool done get set 我将其作为 js
  • OpenAL:alBufferData 返回 AL_INVALID_VALUE,即使输入变量 *看起来* 正常?

    因此 我正在构建一个线程 IMA ADPCM 解码器 将音频数据流式传输到 OpenAL 参见下面的简短描述 但我遇到了一些麻烦 我的问题之一是有时我对 alBufferData 的调用 alBufferData bufferID form
  • 如何仅使用 CSS 创建带有垂直子菜单的水平 HTML 菜单?

    我想设计一个水平菜单 当鼠标悬停时我想出现一个垂直子菜单 我上网冲浪了很多 找到了一些代码 但是当我执行时 在几乎所有代码中我都能正确获得水平菜单 但子菜单根本不显示 我正在 Windows 上使用 ActivePerl 5 12 进行编程
  • 如何从子类重写/扩展内部类?

    我想更改类的方法的执行方式 而不重写该方法 而仅重写 或理想情况下扩展 内部类 假设我无法改变我需要这样做的事实 我正在修改现有的开源代码库 并且提取类或诸如此类的东西会产生摩擦 public class A static class Th
  • 其他计算机上的C#应用程序错误

    当我在我开发的计算机上运行我的应用程序时 它可以工作 但是 当我在其他计算机上运行该应用程序时 出现以下错误 您还需要将 itextsharp dll 也复制到新计算机
  • 如何在Python脚本中运行另一个Python脚本?

    我想在另一个 Python 脚本中运行一个 Python 脚本 我知道最好的方法是导入该脚本 但我不知道如何每 60 秒运行一次该脚本 到目前为止我已经尝试过 import time import mailyolla while 1 mai
  • 在 VBA 中复制粘贴数据的“正确”方法是什么?

    在 Excel 中复制粘贴 VBA 数据的 正确 方法是什么 现在 至少据我所知 这三种是唯一可用的方法 the Range Copy Destination https msdn microsoft com en us vba excel