如何将Excel源数据转换为Oracle Fusion日历事件覆盖导入格式?
解决Oracle Fusion覆盖范围导入的Excel格式转换问题
针对你需要将源数据(每行事件+国家x标记)转换为Oracle要求的「每行对应一个覆盖国家」格式,使用Excel 365的动态数组函数可以一步实现,以下是具体方案:
前提假设
源数据结构:
- A列:Short Code2
- B列:Name2
- C列及以后:各国家名称作为表头,对应单元格用
x标记该事件覆盖此国家 - 数据区域包含表头(第一行是列名)
通用动态数组公式
在空白单元格(如G1)输入以下公式,按回车后自动生成符合要求的完整导入表:
=LET( 源数据, A1:Z100, 事件列, TAKE(源数据,,2), 国家列, DROP(源数据,,2), 国家名称, TAKE(国家列,1), 覆盖标记, DROP(国家列,1), 展开事件, TOCOL(INDEX(事件列, SEQUENCE(ROWS(覆盖标记)), {1,2}),,1), 展开国家, TOCOL(IF(覆盖标记="x",国家名称,""),,1), 结果表头, {"Short Code2","Name2","Country","Coverage"}, VSTACK(结果表头, HSTACK(INDEX(展开事件,SEQUENCE(ROWS(展开国家)),1), INDEX(展开事件,SEQUENCE(ROWS(展开国家)),2), 展开国家, "I")) )
公式说明
LET:定义变量简化公式,避免重复引用TAKE/DROP:快速拆分源数据为「事件信息列」和「国家标记列」,无需手动指定列数TOCOL:将符合条件的国家标记展开为单列,同时把对应事件信息重复对应次数HSTACK/VSTACK:合并事件列、国家列和固定值I,并添加表头
注意事项
- 若源数据中标记为大写
X,需将公式中的"x"改为"X" - 源数据区域
A1:Z100可根据实际数据范围调整,Excel会自动忽略空行 - 生成结果为动态数组,若需转为静态数据,选中结果区域→右键复制→右键「粘贴值」
内容的提问来源于stack exchange,提问作者MaartenB
相关产品推荐
相关产品推荐

