XLSX文件共享公式定位疑问:AU10单元格公式如何获取?
解决XLSX共享公式缺失的推导问题
共享公式的核心规则
- XLSX的共享公式是为压缩文件体积设计的:同一区域内逻辑一致的公式会用共享索引(
si)关联。定义共享公式的单元格会同时携带ref属性(指定公式作用的单元格范围)和完整公式文本;同组的其他共享单元格仅保留si="xxx"和t="shared"标记,不会重复存储公式内容。 - 你遇到的场景中,AN10是该共享组的定义单元格:
ref="AN10:BE10"说明公式作用于AN10到BE10的整行单元格,si="13"是这个共享组的唯一标识。
AU10单元格公式的推导步骤
- 提取基准公式:AN10的公式为
AM10+1 - 计算列偏移量:AN是第40列,AU是第47列,两者列偏移为
47-40=7 - 偏移单元格引用:原公式中的相对引用
AM10(第39列),加上7列偏移后变为AT10(第46列) - 最终公式:AU10的正确公式是
AT10+1
逻辑验证:由于共享公式的作用范围是同一行(AN10到BE10),行号保持不变,仅列引用按相对位置递增。
Julia XLSX包的临时处理方案
目前Julia的XLSX包对仅带si标记的共享单元格支持不完善,会返回空公式。可以手动实现推导逻辑:
- 先遍历工作表,收集所有带
ref和si的共享公式定义,建立si到(基准公式文本、作用范围)的映射表 - 遇到仅含
si的单元格时,根据其在作用范围内的行列偏移,对基准公式中的相对单元格引用做对应偏移计算
内容的提问来源于stack exchange,提问作者Erwin Kalvelagen
相关产品推荐
相关产品推荐

