VBA - Excel(2013)如何找到'每个工作表中的值相同但在每个工作表中替换为不同的值吗?

时间:2016-07-08 19:28:17

标签: excel vba excel-vba

我有一个包含93个预算的工作簿(每张一个)。这些工作表使用vlookup来提取其他预算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

任何帮助都将不胜感激!!

1 个答案:

答案 0 :(得分:1)

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

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