【问题标题】:VBA - Excel (2013) How to 'Find' the same value in each sheet but replace with a different value in each sheet?VBA - Excel(2013)如何在每张表中“查找”相同的值,但在每张表中替换为不同的值?
【发布时间】:2016-07-08 19:28:16
【问题描述】:

我有一个包含 93 个预算的工作簿(每张纸一个)。这些工作表使用 vlookups 来提取其他预算 Excel 文件的值。我通过复制原始预算表然后重命名它们来创建这些表。

目前,所有工作表都在从同一个文件中查找值,但我需要它们从不同文件中查找值。在 93 个预算文件中,查找发生的范围是相同的。我想做一个查找和替换,在每个选项卡 (budgetcode.xlsx) 中查找相同的值,并将其替换为每张不同的新值。

我发现下面的代码适用于 1 张纸,我需要运行 93 次(这在本工作簿中需要一段时间)。有没有办法更新它以运行所有 93 张工作表并将“预算代码”替换为每张工作表中某个单元格中的值?

Sub Macro1()

Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Range("E3:CN9254").Select
Selection.Replace What:="", Replacement:="0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.CalculateFull

End Sub

任何帮助将不胜感激!

【问题讨论】:

  • 欢迎来到 StackOverflow。请注意,这不是免费的代码编写服务。然而,我们渴望用他们的代码帮助其他程序员(和有志者)。请阅读How do I Ask a Good Question 上的帮助主题。您可能还想take the tour 并在这样做的同时获得徽章。之后,请使用您迄今为止编写的 VBA 代码更新您的问题,以完成您希望完成的任务。如果您还没有任何代码,那么您可能是在错误的网站上提问。
  • 各个工作表中是否有任何唯一值?也许您可以使用这些值而不是工作表名称?
  • 嗨拉尔夫。我很快就会用代码更新帖子。
  • 嗨,尼尔。是的,每个工作表中都有一个唯一的单元格。它包含预算代码的字符串值。这些文件以预算代码命名。我试过在公式中使用间接函数,但这需要打开文件才能工作,这就是我遇到问题的地方。

标签: vba excel


【解决方案1】:

这段代码应该给你一个非常好的外壳。我做了一些明显的假设,您需要更改以反映您的实际数据结构。目前我能想到的唯一警告是确保当您替换文件名以确保文件路径存在于您的驱动器上,否则,您将获得一长串烦人的弹出窗口,以寻找有效的要替换的每个项目的文件路径。

Option Explicit

Sub ChangeFileNameInFormula()

Application.ScreenUpdating = False

Dim ws as Worksheet
For each ws in ThisWorkbook.Worksheets

    Dim sBudgetCode as String
    sBudgetCode = ws.Range("A1") 'change to the cell that contains the budget code

    ws.Range("E3:CN9254").Replace What:="OriginalFileName", Replacement:=sBudgetCode, LookAt:=xlPart

Next

End Sub

【讨论】:

  • 感谢@ScottHoltzman。我试过了,但它开始搜索 sBudgetCode.xlsx。我认为这是因为反逗号使其在单元格中输入字符串“sBudgetCode”,而不是将代码中定义的单元格引用引用为 sBudgetCode。我已经删除了 sBudgetCode 周围的引号,它正在运行。我会尽快发布结果。
  • 感谢 shell 代码。它起作用了(删除了 sBudgetCode 周围的反逗号并在“next”之后添加了“ws”),但是因为 Excel 链接到外部文件并且每个工作表大约执行 7200 个,所以这需要很长时间。 24小时后,它仍然没有完成。然后我取消了它并重新编写了代码,只为每个工作表做表格左上角的单元格。然后我使用宏将公式复制并粘贴到其余单元格中,并在 20 分钟内完成。感谢您的帮助!
猜你喜欢
  • 2023-02-24
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 2018-07-31
  • 2018-03-15
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多