使用 Excel 宏 VBA 在 Excel 范围内查找行的最快方法

2024-03-24

我有一个 Excel 电子表格(sheet2),其中记录的数量约为 100 万条。我正在迭代这些记录,并且对于每次迭代,我都会将一行选定的列与sheet1 中大约2000 条记录的另一个范围进行比较。

rangeA = 1 Million rows 'Sheet2
rangeB = 2000 rows 'Sheet1

With sheet1
For Each row In rangeA.Columns.Rows

   For Each rangeBRow In rangeB.Columns.Rows
     If (.Cells(rangeBRow.Row,1).Value = CName And .Cells(rangeBRow.Row,2).Value = LBL ... ) Then
     ' Do something cool... set some cell value in sheet2
     Exit For
     End If
   Next rangeBRow

Next row
End With

我对上述代码的问题是它需要很长时间才能完成执行。除了迭代 2000 行的一百万条记录之外,是否还有其他最快且快速的方法可以在 Excel 宏中的一系列行中查找行?

感谢您的时间。


12 秒检查 5k 行和 200k 行:

Sub Compare()

    Dim rngA As Range, rngB As Range
    Dim dict As Object, rw As Range
    Dim a As Application, tmp As String

    Set a = Application
    Set dict = CreateObject("scripting.dictionary")

    Set rngA = Sheet1.Range("A2:F200000")
    Set rngB = Sheet1.Range("K2:P5000")

    For Each rw In rngA.Rows
        'Create a key from the entire row and map to row
        ' If your rows are not unique you'll have to do a bit more work here
        ' and use an array for the key value(s)
        dict.Add Join(a.Transpose(a.Transpose(rw.Value)), Chr(0)), rw.Row
    Next rw

    For Each rw In rngB.Rows
        'does this row match one in range A?
        tmp = Join(a.Transpose(a.Transpose(rw.Value)), Chr(0))
        If dict.exists(tmp) Then
            rw.Cells(1).Offset(0, -1).Value = dict(tmp)
        End If
    Next rw

End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Excel 宏 VBA 在 Excel 范围内查找行的最快方法 的相关文章

  • VBA C# DLL 未注册

    我制作了一个 C NET dll 我想从 VBA 运行它而不注册它 我找到了解决方案there https stackoverflow com a 13333819并且它可以完美工作 但前提是程序集是使用 Framework NET 3 5
  • xlwt 可以在单元格中创建一个包含标题和链接变量的超链接吗?

    例如 如何更改以下行 使 test 为变量 T 且 http google com http google com 是变量L ws write 0 0 xlwt Formula test HYPERLINK http google com
  • java.exe 以非零退出值 1 结束

    只是为了开始 我并不是真正尝试从 Android 中的 xlsx 文件中读取单元格 我已经尝试了几乎所有我在 Google 上搜索到的内容 但是每次 在两台不同的 PC 上 都是 Java 1 7 0 79 当我尝试构建 运行 这个应用程序
  • 无法使用 Excel JavaScript API 设置 NumberFormat

    我正在使用 Excel Javascript API 在搜索文档后 仍然找不到我想要实现的解决方案 因此 我想将所有内容设置为数字格式 文本 这样 Excel 的自动格式设置就不会与任何单元格的内容混淆 不会删除前导零或更改日期格式 文档建
  • 在 Django(Python) 中向用户提供 Excel(xlsx) 文件下载

    我正在尝试使用 Django 创建和提供 Excel 文件 我有一个 jar 文件 它获取参数并根据参数生成 excel 文件 并且它可以正常工作 但是 当我尝试获取生成的文件并将其提供给用户下载时 文件损坏了 它的大小为 0kb 这是我用
  • 查询从同一表中的另一条记录获取值并按大于间隙阈值的差异进行过滤

    我将数据导入到 MS Access 中的临时表中 如下所示 我添加了需要使用 SQL 查询计算的 Gap 和 Previous Current 列 间隙阈值 是用户输入或范围提供给查询和例如是 300 GlobalID 对 ItemID 进
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • Excel 中使用通配符 {*} 进行 Vlookup

    我有下表 现在 我想检查主题是否具有数据中存在的任何文本 col F I used VLOOKUP A2 F F 1 0 但它正在给予 N A Try 公式为B2 SUM COUNTIF A2 F 2 F 3 gt 0 Edit SUM C
  • 参考上一个问题:为什么 VBA 没有加载所有发票详细信息

    除了上一个问题之外 我们在销售发票上仍然存在相同的加载失败问题 下面的 VBA Json 仍然仅加载一行或第一个产品详细信息行 而不是与表中该销售发票合作的所有产品行详细信息 我们希望下面的 VBA 能够根据参数加载发票详细信息 例如 如果
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • Excel VBA 用户窗体 - 当发生变化时执行 Sub

    我有一个包含很多文本框的用户表单 当这些文本框的值发生变化时 我需要通过调用子例程 AutoCalc 根据文本框值重新计算最终结果值 我有大约 25 个框 我不想向每个调用上述子例程的文本框单独添加 Change 事件 当某些值发生变化时调
  • 导入到 SQL Server 时忽略 Excel 文件中的列

    我有多个具有相同格式的 Excel 文件 我需要将它们导入 SQL Server 我当前遇到的问题是 有两个文本列我需要完全忽略 因为它们是自由文本 并且某些行的字符长度超出了服务器允许我导入的长度 这会导致截断错误 因为我的分析不需要这些
  • 强制刷新工作表的“最后一个”单元格

    Pressing Ctrl End in Excel takes you to the bottom right most cell of the worksheet 如果删除最后的行或列并保存工作簿 最后一个单元格以及滚动条都会更新 我记
  • 打开 Excel 工作簿时自动运行 VBA 代码

    我有 VBA 代码 我想在打开 Excel 工作簿时运行 我尝试在代码应该运行的工作表中创建一个公共过程 Public Sub Workbook Open Some code here End Sub 工作簿打开时它不会运行 它应该在其中一
  • 如何获取 pandas 数据框并覆盖 Excel 工作簿中的特定工作表

    我想获取一个数据框并让它替换特定工作表中的现有数据 假设为sheet1 然后我想获取另一个数据框并将其附加到另一张工作表上的数据 比如说同一工作簿中的sheet2 目前 我必须将数据写入新的 Excel 工作簿 我无法在线找到如何实际替换我
  • 在Excel中显示毫秒

    我正在尝试在 Excel 宏中显示毫秒 我有一列整数 它们是以毫秒为单位的时间戳 例如 28095200 是上午 7 48 15 200 我想在它旁边创建一个新列 以保持运行平均值并以hh mm ss 000格式 Dim Cel As Ra
  • Excel ISNUMBER 函数与 IF 语句

    我有一个正在使用的 Excel 文件 有一个列包含数字和文本 有时只是其中之一 我正在尝试编写一个函数来扫描单元格的最左侧部分以查看它是否以数字开头 我以为我拥有它 但显然没有 这就是我所拥有的 IF ISNUMBER LEFT E8 1
  • Excel宏隐藏特定单元格和合并区域

    我试图根据另一个单元格的值隐藏特定单元格 到目前为止 我设法隐藏整行 但无法隐藏特定单元格 Local Currency value show hide item If Range Currency Value USD Then Range
  • excel使用单元格引用作为逻辑运算符并查找值

    我有一个表来查找这样的值 logical test points lt 0 1 lt 10 2 lt 20 4 gt 20 5 如果我的单元格 例如 A1 如果我的单元格 如果我的单元格 gt 20 则结果为 5 我可以为此使用多个 if
  • VB:在 Adob​​e Illustrator、Photoshop 中分配给布尔属性

    在使用 VBA 自动化 Adob e Illustrator CS3 时 我发现分配一个布尔变量 to a 布尔属性结果总是分配 False Dim New Path As Illustrator PathItem Dim v As Boo

随机推荐

  • 是否可以在 Ruby 中将 &:(与冒号)符号与参数或链接一起使用? [复制]

    这个问题在这里已经有答案了 我想做类似的事情 1 2 3 map to s 2 另外 如何做类似的事情 1 2 3 map to s 2 rjust 8 0 to s是一个符号 而不是一个方法 所以你不能像这样向它传递任何参数 to s 2
  • 在 ASP.NET MVC 的部分视图内执行 Javascript

    我在 head 标签内使用此 JavaScript 代码 以便使用浏览按钮填充 div 以便用户可以上传图像 swfupload
  • 当我启动 apache 并继续杀死我的机器时,如何防止产生大量 apache 进程?

    我在一台 Debian 机器上有一个流量很大的应用程序 而 apache 开始表现得很奇怪 每次我启动 apache 时 都会生成大量的 apache 进程 应用程序根本无法加载 并且整个机器很快就会冻结 必须重新启动才能重新启动 这是启动
  • R,迭代矩阵的行向量

    我有一些向量vect我想迭代行向量v的矩阵并计算 cov v vect I tried for vect in mat2 where mat2 is a 215 by 31 matrix 然而 每个向量似乎都是值为 1 的标量 如何迭代矩阵
  • 为什么在使用 setRequestHeader 发出 xmlhttprequest 时无法设置 cookie 和 set-cookie 标头?

    我想知道为什么不能设置cookie使用 setRequestHeader 来设置标头 是否有任何特定原因或只是它们是由浏览器本身添加的 因此这些标头被禁用 是否存在安全问题 Edit 我正在使用 Node js 并使用xmlhttprequ
  • 从上到下 - 翻译动画

    需要制作下一个动画 在android 2 2及以上版本 1 从上到下移动按钮 点击他后 2 从下往上移动 再次点击他后 第一个动画工作正常 但第二个动画不行 btn 从下到上 跳跃 并且没有动画 Code public class Main
  • Javascript keyup 无法按预期工作,它会在我没有将手指从按钮上移开的情况下执行

    我正在尝试用 javascript 创建一个简单的游戏 但我陷入了如何处理按键的困境 小例子 function keyUpEvent event alert event keyCode window addEventListener key
  • 使用 Scipy/python 寻找峰值的算法

    我有随机数据 在其中绘制了图表以查找源自零的峰值我使用了此代码 op col for i in df Speed op col append i print op col 使用 for 循环将 速度 值转换为一维数组 0 7 18 24 2
  • VB.Net 中接口中定义的属性的受保护集

    我们有一个界面 可以大大简化为 public interface IPersistable
  • CSS3 缩放变换和溢出问题:在 Safari 上隐藏

    我在 Safari 上遇到缩放变换效果和溢出问题 当我在 div 内容上使用此效果时 溢出在圆形容器上不起作用 这是我的代码 container width 100px height 100px border radius 50 backg
  • Visual Studio 2010 工具箱为空

    我有 Visual Studio 2010 Professional 但不知何故我的工具箱几乎空了 我有 报告 ReportViewer Visual Basic 电源包 a few basic items like line and ov
  • 如何在表单对话框中接收附件?

    我目前有一个机器人对话框 它请求并接收用户的附件 我想将其转换为表单对话框 因为我认为这更适合 请向我发送文档1 直到文档N 您能给我指出一个接收用户附件的表单对话框的示例吗 我读到 FormFlow 现在支持附件 https github
  • node-postgres 是否支持多个结果集

    我有一个返回多个结果集的 PostgresQL 函数 我可以毫无问题地在 net 中提取这些结果集 所以我知道我的函数可以正常工作 但我在使用 node postgres 时遇到了麻烦 结果对象返回一个包含 7 个项目的数组 该数组与返回的
  • 更改 Kubernetes docker-for-desktop 集群网络 ip

    我正在尝试在 docker for desktops 上配置 Kubernetes 并且想要更改分配给容器的默认网络 示例 默认网络是10 1 0 0 16但我想要172 16 0 0 16 I changed the docker net
  • 无法在 ViewComponent 中加载脚本

    我创建了一个ViewComponent其中显示一个Table需要一些插件来启用特定功能 在 的里面ViewComponent我尝试创建一个特定的部分 section DataTableScripts 不幸的是我发现一个ViewCompone
  • 复制和区分表单的各个部分

    更新 使用colecmc提供的代码 谢谢 我更新了codepen 我喜欢添加 date now 的方式 但我只想增量增加 我不确定如何将其应用到这个函数中 我尝试了 zer00ne 的索引增量 但我做错了 let cloneList ind
  • 在 jenkins 中完全跳过执行 shell 步骤

    我似乎无法在 Jenkins 中运行构建执行 shell 步骤 我过去曾在 Windows 上与 Hudson 合作 并且能够毫无问题地创建 shell 批处理步骤 但我似乎在这里遗漏了一些东西 这是一个全新的 jenkins 安装 我进入
  • 为什么 PHP 错误打印两次?

    Summary 令人惊讶的是我在谷歌或SO上找不到任何关于此的信息 当我在 PHP 中引发异常时 它会在我的控制台中出现两次 并包含错误消息和堆栈跟踪 第一次打印时显示 PHP Fatal error 第二次打印时仅显示 Fatal err
  • “用户正在输入消息”功能...?

    只是要指出 我指的是用 PHP jQuery 编写的聊天系统 您可以在底部看到 用户正在输入消息 我尝试了很多方法来完成它 但都失败了 我构建了自己的用 PHP MySQL Ajax jQuery 编写的聊天系统 我并不是要求某人为我编写该
  • 使用 Excel 宏 VBA 在 Excel 范围内查找行的最快方法

    我有一个 Excel 电子表格 sheet2 其中记录的数量约为 100 万条 我正在迭代这些记录 并且对于每次迭代 我都会将一行选定的列与sheet1 中大约2000 条记录的另一个范围进行比较 rangeA 1 Million rows