【发布时间】:2020-06-07 00:15:15
【问题描述】:
我有如下所示的 Excel 公式
示例 1
=SUMIF('TRx Wkly NT'!$A:$A,"AdderAKl* XR*",'TRx Wkly NT'!BS:BS)/10^3
示例 2
=SUMIF('TRx Wkly NT'!$A:$A,"amphe* ER* prasco*",'TRx Wkly NT'!BS:BS)/10^3+SUMIF('TRx Wkly NT'!$A:$A,"amphe* ER* teva*",'TRx Wkly NT'!BS:BS)/10^3
示例 3
=SUM('Baseline Trx Wkly NT'!BS:BS)/1000-SUM(PX29,PX73,PX108)/1000
在这些公式中,“BS:BS”指的是整个列。我需要一个用 VBA 替换 "BS:BS" 和 "ColumnLetterVariable:ColumnLetterVariable" 的子
我如何实现这一目标?我什至不知道从哪里开始。我使用正则表达式吗?
问题 1:我不知道我要替换什么。 “BS:BS”不是常数;它一直在变化。可以是一天AA:AA,也可以是第二天Z:Z等单个字母。 VBA 需要一种方法来识别字符串的Column:Column 部分
问题 2:“BS:BS”可能出现在公式中的多个位置,例如示例 2。所有这些都需要替换为我的 VBA 变量。
编辑:示例公式的$A:$A 部分不需要替换。只是BS:BS 部分,它一直在变化。
【问题讨论】:
-
myCell.Formula = Replace(myCell.Formula, "!BS:BS", "!A:A") -
@TimWilliams 为什么会这样? “BS:BS”不是恒定的。这只是一个例子。这部分字符串一直在变化。 (在我的问题 1 中解释)
-
您的问题不清楚您不知道要替换的是什么。第一个示例中的
$A:$A怎么样?你怎么知道哪些引用需要切换? -
@TimWilliams 很抱歉造成混乱,我修改了原帖。你是对的,我不知道我要替换什么。标有 $ 的东西不需要切换。
-
最好只生成一个新公式。例如:
=SUMIF('TRx Wkly NT'!$A:$A,"AdderAKl* XR*",'TRx Wkly NT'!" & myCol & ":" & myCol & ")/10^3其中myCol是您需要的列