把Google Sheets导出的.xlsx文件交给同事,对方打开后看到的表格却和你测试时不一样。ARRAYFORMULA、QUERY这些Google专属函数在Excel里根本不存在,真正恼人的是:Excel居然不报错。
最近我用openpyxl检查一个自己发布过的文件,发现203个单元格仍然保留着Google-only函数。这203格全都被IFERROR包裹,于是Excel显示的是“no matches”,而不是标准的#NAME?错误。也就是说,表格看起来一切正常,但实际计算结果早已丢失。
为什么错误会被静默吞掉?导出时,Google函数被改写成__xludf.DUMMYFUNCTION("原始公式"),原始公式变成了一串字符串参数。Excel把这个值存下来,但永远不会去解析它。而我在Sheets一侧添加的IFERROR,原本只是为了在查无结果时输出一个破折号,现在却顺带把“函数不存在”这个致命错误也拦截住了。最终单元格返回空字符串或预设的备用文本,屏幕上只留下“— no matches —”。
最麻烦的是:查询结果为零和公式从未执行,这两种状态在表格里长得一模一样。你无法靠肉眼判断哪个是真实结果,哪个是静默失败。
检测其实只需要一次简单的openpyxl扫描:因为__xludf.DUMMYFUNCTION会以纯文本形式保留在公式单元格中。用同样的代码还能在改写后确认清零。
修复的关键是不要继续依赖动态数组。你需要逐个提取原始公式字符串,把FILTER、SORTN、QUERY改写成Excel原生函数与辅助列的组合,并去掉那层救命又害人的IFERROR,让真正的错误暴露出来。否则,下一次交付文件时,你仍然会看到一堆“看起来正常”的空结果。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.