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

jhkqcmku  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(152)

我正在将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

我希望我想达到的目标是比较明确的,并且你可以帮助我。提前感谢!

uqjltbpv

uqjltbpv1#

不确定我是否理解您的问题,但如果您希望工作表“processed_values”中的单元格A1引用“Import”中的单元格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()))

相关问题