【发布时间】:2019-02-12 16:52:01
【问题描述】:
Excel 不支持预期的共享公式(由 OpenXML SDK https://www.microsoft.com/en-us/download/details.aspx?id=30425 创建):
- 公式引用工作表而不使用绝对引用(例如“=VLOOKUP(A1;Sheet2!A:B;2;0)”)
- 使用结构化引用的公式,例如 [@[Sales Amount]] (https://support.office.com/en-us/article/using-structured-references-with-excel-tables-f5ed2452-2337-4f71-bed3-c8ae6d2b276e)
在打开或保存文件时引发错误,有时会出现以下错误:“一个或多个公式...超过允许的 8192 个字符的限制”
另一方面,以下共享公式可以正常工作:
- “=VLOOKUP(A1;Sheet2!$A:$B;2;0)”(对美元使用绝对引用)。
- “=A1”或“=$A1”(将公式扩展到一列时)
XML 结构如下所示:
B2: <c r="B2"><f t="shared" ref="B2:B3" si="0">VLOOKUP(A2,Sheet2!A:B,2,0)</f><v></v></c>
B3: <c r="B3"><f t="shared" si="0"></f><v></v></c>
用美元替换公式,它会起作用。通过结构化引用,它不会,等等。
通过 Excel UI 使用此类公式时,扩展公式将导致共享公式或不导致共享公式,具体取决于是否支持该公式(我想)。问题是应该支持所有公式,否则应该在某个地方记录。
当一个公式是共享公式(t 值是共享的)时,这个值 表示此特定单元格的公式所属的组。 一组共享公式中的第一个公式保存在 f 元素。这被认为是“主”公式单元格。随后的 共享此公式的单元格不需要将公式写入其 f 元素。相反,特定单元格的属性 si 值是 用于计算公式表达式应基于什么 单元格与主公式单元格的相对位置。
参考:https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.cellformula.aspx
其他人经历过这种情况吗?
【问题讨论】: