如何在需要重复更改行号的值中使用通配符进行搜索和替换?

问题描述 投票:0回答:1

我正在将 CSV 文件中的值导入到 Excel 文件的工作簿中。然后我使用 VBA 过滤和排序这些值。我们称此工作表为“raw_values”。然后在另一张表(“processed_values”)中读出并处理这些值。

接下来,我想清除“processed_values”上的所有单元格,并将“设置”表中的一行公式复制到“processed_values”表中的所有行。但是,由于此表中公式中的引用引用了“raw_values”表,因此这些引用会因较早的排序和过滤而发生变化。例如,在“raw_values”中,前 10 行由于过滤而被删除,第 11 到 20 行由于排序而放在底部。 “processed_values”中的引用已损坏或指向错误的行。

如何更正对正确行的错误引用?我想到了这个,但是使用通配符不起作用:

    Selection.Replace What:="raw_values!" & "(*)??", Replacement:="raw_values!" & "(*)36", LookAt:= _
         xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
         ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

有了这个,我想要以下内容:

raw_values!*?? -> raw_values!*36
Where * = the column and ? = the row

结果:

Import!D21 -> Import!D36
Import!G22 -> Import!G36
Import!H21 -> Import!H36
Import!J19 -> Import!J36

我希望我想要达到的目标有点清楚,并且您可以帮助我。非常感谢!

excel vba search replace wildcard
1个回答
0
投票

不确定我是否明白你在问什么,但如果你想让工作表“processed_values”中的单元格 A1 引用“导入”中的单元格 A1,你可以使用间接和地址公式,例如

=INDIRECT("Import!"&ADDRESS(ROW(),COLUMN()))
无需搜索和替换特定引用。如果需要,您可以通过添加或减去抵消它,例如,将
=INDIRECT("Import!"&ADDRESS(ROW()+2,COLUMN()-1))
放在单元格B1中将引用“导入”的单元格A3。

所以对于范围 A1:Z100,VBA 代码将是

Range("A1:Z100").Formula2R1C1 = "=INDIRECT("Import!"&ADDRESS(ROW(),COLUMN()))

© www.soinside.com 2019 - 2024. All rights reserved.