因此,我用来评估 excel 文件的东西叫做 Apache POI,它不知道如何使用 R1C1 公式。我得到了一个包含如下公式的文档:
=INDIRECT(B$1&"!R"&ROW()&"C"&($W$1+1);0)*$F$4
我可以将每个INDIRECT
字符串内容(含义B$1&"!R"&ROW()&"C"&($W$1+1);0
)包装成类似另一个 Excel 公式或表达式的东西。
我想知道如何编写类似FORMULA_R_to_A(ScarryR1C1Expression)
这样的代码,仅使用 Excel 公式将 R1C1 字符串转换为 A1 字符串格式?
关于如何将 R1C1 转换为 A1,有很多种方法。但在这里,我们得到的不是纯 R1C1 作为精确路径,而是一个复杂公式,它本身首先计算为表示 R1C1 的字符串。
答案1
改进的答案:
=ADDRESS(ROW(),$W$1+1,1,1,B$1)
这就是如何“将 R1C1 字符串转换为 A1 字符串格式”。(:
先前的答案(用于记录):
假设您只使用 AZ 列,
=INDIRECT(B$1&"!R"&ROW()&"C"&($W$1+1);0)*$F$4
应该相当于
=INDIRECT(B$1&"!"&CHAR(64+($W$1+1))&ROW();1)*$F$4
(感谢@mark fitzpatrick 的修改建议)
想法:用于CHAR()
'生成A1字符串格式。
如果有效/无效,请分享。(:
答案2
您还可以使用索引:
=INDEX(INDIRECT(B$1&"!A:ZZ"),ROW(),$W$1+1)