将所有工作表中的值替换为新值

2024-04-11

我有大约 40 个电子表格,每个电子表格最多包含 300k 行 x 93 列(当前)。大约有 11 亿个数据点。我需要检查每个单元格,并确定单元格是否包含 8 个特殊字符之一,这些字符在电子表格的导入中已被弄乱。

这是一项每天需要运行多次的任务以及许多其他步骤。因此,我正在寻找一种使用 VBA 来完成此操作的方法。我有以下代码:

Sub Hide_All_Sheets()

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.DisplayStatusBar = False

Dim k As Integer
Dim t As String
Dim x As Integer

k = Sheets.Count
x = 1

    While x <= k
        t = Sheets(x).Name
        If t = "Launch Screen" Or t = "Equiv sheet" Then
            x = x + 1
        ElseIf t = "Summary_1" And Worksheets("Launch Screen").Range("N5") = "1" Then
            Sheets(x).Visible = True
            x = x + 1
        Else

            Cells.Replace What:="ö", Replacement:=Chr(214), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False
            Cells.Replace What:="ü", Replacement:=Chr(220), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False
            Cells.Replace What:="ä", Replacement:=Chr(220), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False
            Cells.Replace What:="ß", Replacement:=Chr(223), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False
            Cells.Replace What:="è", Replacement:=Chr(200), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False
            Cells.Replace What:="Ü", Replacement:=Chr(223), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False
            Cells.Replace What:="Ä", Replacement:=Chr(223), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
            ReplaceFormat:=False

            Sheets(x).Visible = False
            x = x + 1
        End If

    Wend

End Sub

唯一的问题是加载过程从 20 秒变成了 900 秒。

我想知道有没有办法更快地做到这一点?特别是如果有一种方法可以运行手动 CTRL-H 过程,并在所有电子表格中进行替换,但使用 VBA?


11亿个任务还有很多工作要做。您的代码有条不紊地循环遍历每个工作表广告,替换七个(not8) 输入时损坏的特殊字符。

下面使用工作簿范围的方法来替换工作表集合中的循环。这可能有助于保留要处理的信息的“负载”。

Sub Repair_All_Worksheets()
    Dim fr As Long, FandR As Variant, vWSs As Variant

    appTGGL bTGGL:=False

    FandR = Array("ö", Chr(214), "ü", Chr(220), "ä", Chr(220), "ß", Chr(223), _
              "è", Chr(200), "Ü", Chr(223), "Ä", Chr(223))

    With ActiveWorkbook
        ReDim vWSs(1 To .Worksheets.Count)
        For fr = LBound(vWSs) To UBound(vWSs)
            vWSs(fr) = .Worksheets(fr).Name
        Next fr

        With .Worksheets(vWSs)
            .Select
            .Parent.Worksheets(vWSs(1)).Activate
            For fr = LBound(FandR) To UBound(FandR) Step 2
                Cells.Replace What:=FandR(fr), Replacement:=FandR(fr + 1), LookAt:=xlPart
            Next fr
        End With
    End With

    appTGGL

End Sub

Public Sub appTGGL(Optional bTGGL As Boolean = True)
    Debug.Print Timer
    With Application
        .ScreenUpdating = bTGGL
        .EnableEvents = bTGGL
        .DisplayAlerts = bTGGL
        .Calculation = IIf(bTGGL, xlCalculationAutomatic, xlCalculationManual)
    End With
End Sub

The Application.EnableEvents 属性 https://msdn.microsoft.com/en-us/library/office/ff821508.aspx与其他环境变量一起被禁用。这应用.计算 https://msdn.microsoft.com/en-us/library/office/ff821260.aspx同样暂时暂停xl计算手册 https://msdn.microsoft.com/en-us/library/office/ff835845.aspx。这对于具有易失性函数的工作表尤其重要,但这里的情况似乎并非如此。

顺便说一句,导入数据时,文本导入向导允许您在第一页上指定代码页文件来源:文本框。将其设置为正确的区域代码页(或者可能只是 65001:Unicode (UTF-8))应该可以修复您的导入问题。这工作簿.OpenText 方法 https://msdn.microsoft.com/en-us/library/office/ff837097.aspx有类似的选项。

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

将所有工作表中的值替换为新值 的相关文章

  • 在VBA中对选定单元格执行修剪功能

    我想弄清楚是否有一种方法可以在 Excel 宏中运行一个简单的函数 TRIM 以删除重复的空格字符 以便它直接在单元格上执行 这样我就不必创建一个额外的列TRIM 前一列的函数 它应该适用于选定的列要不就选定的单元格 Sub trim Ac
  • 相应列值的最小值之和

    我有两列数字 我想在一个单独的单元格中计算总和 总和将包括这两列中相应单元格的最小值 Example A B 1 1 2 2 4 3 3 0 1 4 5 5 我需要一个公式来计算单元格中 1 3 0 5 的总和 其中 1 is the MI
  • 使用查找函数未找到值的错误消息

    我使用此代码来检查条形码是否在数据库中 但每次条形码不在列表中时 它都会提示一条错误消息 运行时错误 91 未设置对象变量或 With 块变量 是否有一行我可以像消息框一样添加 表明输入的条形码无效 我知道这就是我所需要的 但显然 我不知道
  • Excel 数据透视表

    我是一名 Excel 新手 想知道 Excel 是否具有内置功能来执行以下操作 转此数据 Name Activity Option Bob Monday Activities Golf Bob Tuesday Activities Kaya
  • 使用间接的动态 Vlookup

    我在使用间接函数时遇到问题 这就是我正在寻找的内容 我正在尝试根据当前选项卡创建动态 vlookup VLOOKUP B3 NH BBC E 1 Z 188 MATCH Share Outstanding NH BBC E 1 Z 1 0
  • 使用 SharedStringTable 和 .net 中的 xml sdk 设置文本值

    我有一段代码 如下 可以获取Excel中特定单元格的文本 但我不知道如何修改此文本以更改单元格文本 public static void UpdateTextCell string docName string text uint rowI
  • Excel VB脚本打印所有工作簿的工作表

    是否有使用 Excel 的 vb 脚本 或宏 将其所有工作表打印到给定打印机 页数是可变的 Excel的版本是2007 Thanks 看看有没有什么像这样 http vbadud blogspot com 2007 05 print mul
  • 使用嵌入资源打开 Excel 工作簿文件

    我正在使用 Microsoft Office Interop 打开 Excel 文件 该文件被放置在一个特殊的文件夹中 工作簿代码从该文件夹中读取该文件 现在 要求是Excel文件可以放在任何地方 我认为最好的方法是将 Excel 文件作为
  • 在 VBA 中加速嵌套循环宏所需的指针

    我需要帮助来加速我的简单的 8 变量嵌套循环宏 每个循环仍然需要大约 1 秒 并且有几十万个循环需要完成 因此需要 3 到 4 天才能完成 从我在这里的阅读和实验中 我确实已经尽可能地简化了流程 但现在遇到了困难 我的宏基本上有 3 个部分
  • 是否可以在 Outlook 启动时运行 VBA 函数?

    我希望 Outlook 启动后立即运行 VBA 函数 这可能吗 如果可以 我需要做什么 我在谷歌上的搜索失败了 我不介意弹出安全警报 Use the Application Startup事件在ThisOutlookSession Priv
  • 有一个更好的方法吗? VBA脚本

    我这里有一份供料泵的跟踪清单 我们必须考虑库存水平 所以我做了这个 当您将泵输入表中时 什么也没有发生 当您将患者姓名放在上面时 该行会变成粉红色 表明该泵已离开我们的库存 我试图将一个脚本 宏放在一起 可以计算我们仍然拥有的泵 即白色行
  • 将 Excel 模板 (xltx) 作为 Excel 模板而不是工作簿打开

    我正在尝试编写一行代码来打开 Excel 模板 xltx 文件作为 Excel 模板文件而不是新工作簿 我只是想让用户查看和编辑他们在我们网络上的库文件夹中的模板 然而 我尝试过的所有操作都会打开一个新的工作簿而不是模板 我尝试过互操作 W
  • COM 错误?打开工作簿两次会导致引用损坏

    归功于fuglede https stackoverflow com users 5085211 fuglede为了引起我的注意 这是 COM 错误吗 我打开 Excel 工作簿 A 然后打开工作簿 B 这两个工作簿在单元格 A1 中都有一
  • Excel 中数字的条件格式(自定义格式)具有多个条件

    我想根据单元格中的值动态地将数字格式化为 M 百万 B 十亿 或 K 千 我尝试过 但这不起作用 gt 1000000000 0 B gt 1000000 0 M gt 1000 0 K 0 如果我给出任意两个条件 它就会起作用 例如 gt
  • 替换VBA中的变量字符串

    我需要替换字符串中的某些内容 但替换的内容可能会有所不同 有可能 XY test XXxY test XXyyXx TEST yXyy Test 以及几乎任何其他空格和上述情况的组合 我需要替换 test 部分并保留 XXX 所以 当使用简
  • 用于替换格式但保留单元格值的 VBA:部分解决

    我正在尝试组合 VBA 来搜索特定的单元格格式 然后更改该单元格格式 我从这篇文章中得到了灵感 Excel VBA 值替换后仍保持字符串格式 https stackoverflow com questions 25825136 excel
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • 点击后如何等待页面加载

    下面是简单的 IE 自动化代码 只需输入订单号 例如1413105088和邮政编码始终是78759并单击 提交 按钮 然后从结果页面中获取跟踪号码 例如017136295201034并将它们放入 C 列 它按预期工作 但由于 IE 不太可靠
  • Excel 仅粘贴特殊使用值,还将值的数据类型与值一起复制到目标单元格中

    我一直在尝试更多地了解 Excel 单元格 特别是它们的数据类型 如果有人对细节感兴趣 我的调查位于下面的编号点中 我的结论被标记为 A 到 D 我真的很感兴趣是否有人有什么可以补充的 答 每个 Excel 单元格都有一个属性 用于定义它将
  • 从 Rest API 响应内容处置输出中下载 javascript 中的 excel 文件 [对象,对象]

    我想从我的 angularJs 代码下载一个 excel 文件 我向 Java Rest API 发出 http post 请求并返回带有标头的文件 Content Disposition 附件 文件名 new excel file xls

随机推荐

  • PHPMailer ,通过电子邮件内容与不同的接收者保持 1 个 SMTP 连接

    phpMailer New PHPMailer phpMailer gt isSMTP phpMailer gt SMTPKeepAlive true for Send your emails right away phpMailer gt
  • 如何使用 Moq 模拟 SoapException 来对错误处理进行单元测试

    我继承了一个小型控制台应用程序 用于调用 SOAP Web 服务 这是一个以各种方式记录异常的嵌套 try catch 的悲剧性混乱 我想围绕抛出 SoapException 时它的行为进行一些测试覆盖 问题 当我无法模拟接口并且无法将属性
  • 如何通过Hibernate获取数据库版本?

    有没有办法通过Hibernate 3 2 API获取底层数据库版本的一些信息 我未能在这里和 javadoc 中找到相关位 获取数据库引擎的版本是特定于实现的 这意味着没有获取版本的共享方法 因此 Hibernate 无法真正提供 API
  • 淡入时的 ScrollTop 引导框模式

    我使用 bootbox js 制作模态 但是当模态淡入并且内容太长时 滚动条会到达底部按钮的级别 当模态出现时 我需要滚动条保持在顶部 我已经解决了添加 off shown bs modal 在 bootbox dialog 之后 boot
  • 使用 webview 显示来自 sdcard 的图像不起作用

    我已经在 sdcard 根目录中下载了 map750 png 文件 但是当我尝试在带有一些文本的 Web 视图中显示它时 只显示文本 你能帮我找出代码中的错误吗 谢谢 setContentView R layout webview mWeb
  • AVPlayer audioSessionGotInterrupted 从后台唤醒时的通知

    我使用 AVAudioPlayer 来播放音频 我启用了背景音频并且音频会话配置正确 我实施了audioSessionGotInterrupted音频会话中断时收到通知的方法 这是我当前的代码 objc private func audio
  • 是否可以从 qt QColumnView 中删除预览小部件?

    我需要在 qt 视图中显示一组分层数据 我正在使用 QColumnView 来显示模型 但是 有一个功能可以使视图中的最后一列被降级为预览小部件 有可能隐藏这一点吗 例如 类似于 view setPreviewWidget NULL 尽管这
  • Python 从动态文件名导入

    我处于以下情况 我有一个 python 脚本main py 根据配置文件运行一些操作 配置文件本身就是一个 python 脚本 类 我希望能够从命令行传递不同的配置文件作为参数并将其导入主脚本中 python 中是否可以动态加载类 如果是这
  • 在运行时将 scala 3 代码从字符串解析为 Scala 3 AST

    我的目标是将 Scala 3 代码作为字符串获取 并在运行时将其解析为 Scala 3 的抽象语法树 在此过程中 如果代码存在编译错误 我应该将其作为某些异常的一部分 更大的目标是如果 scala 代码有效 则最终得到 Expr T 并通过
  • 将包裹的物品居中放置在弹性盒之间的空间中

    对于导航部分 我希望它使用space between理由 对于导航可能需要换行的较小显示器 我希望这些项目能够自行居中 而不是单独排成一行时粘在左侧 nav display flex width 100 flex flow row wrap
  • document.write() 会造成什么损害? [复制]

    这个问题在这里已经有答案了 此刻发生了什么不好的事情document write 被调用 我听说过一些关于document write对 DOM 或 Javascript 库的使用产生不利影响 我面前有一个问题 我怀疑它是相关的 但无法找到
  • SQL - 合并重叠数据

    我在 SQL Server 中有一个简单的数据集 如下所示 ROW Start End 0 1 2 1 3 5 2 4 6 3 8 9 Graphically the data would appear like this 我想要实现的是折
  • C 中的非阻塞睡眠定时器

    我正在为 Windows 寻找一个很好的 C 语言非阻塞睡眠定时器 目前我正在使用sleep 10 这当然是一个阻塞计时器 另外 我希望它不消耗系统资源 就像我的睡眠计时器一样 它不使用任何我满意的 CPU 或系统资源 那么 我可以使用的最
  • Zebra iMZ320 无法理解命令 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试将标签从 Android
  • 如何将容器推送到 Google 容器注册表(无法创建存储库)

    编辑 我只是将其归咎于平台不一致 我现在已经放弃推送到 Google Cloud Container Registry 而是创建了一个 Ubuntu VM 我正在其中执行此操作 出于前面所述的原因 我也投票决定结束这个问题 并且因为这可能应
  • 如何防止加载meteor.local(使用phonegap构建ios应用程序时)

    这是我问的问题的延伸here https stackoverflow com questions 28843616 using meteor app on ipad that was deployed to remote server wi
  • 实体框架表每种类型的性能

    所以事实证明 我是最后一个在实现 TPT 每个类型的表 继承时发现 Microsoft 实体框架中存在的基本层的人 构建了一个包含 3 个子类的原型 基表 类由 20 多列组成 子表由约 10 列组成 一切都运行良好 我继续研究应用程序的其
  • 如何获取对象构造函数的参数名称(反射)? [复制]

    这个问题在这里已经有答案了 假设我以某种方式从其他类获得了对象引用 Object myObj anObject 现在我可以获得这个对象的类 Class objClass myObj getClass 现在 我可以获得该类的所有构造函数 Co
  • 如何在评估 Click cli 函数后继续执行 Python 脚本?

    假设我在文件中定义了一个基本的 click CLI 命令cli py import click click command click option test option def get inputs test option return
  • 将所有工作表中的值替换为新值

    我有大约 40 个电子表格 每个电子表格最多包含 300k 行 x 93 列 当前 大约有 11 亿个数据点 我需要检查每个单元格 并确定单元格是否包含 8 个特殊字符之一 这些字符在电子表格的导入中已被弄乱 这是一项每天需要运行多次的任务