Sharepoint列表双逗号分隔数值列对应相乘求和的Calculated Column实现咨询
前置说明
原生SharePoint计算列仅支持固定文本处理函数,无法动态识别不定数量的逗号分隔值,以下采用无代码基础要求的Power Automate云端流实现,可自适应任意数量的同长逗号分隔值。
分步操作
第一步:在列表中新增存储结果的普通列
- 打开目标SharePoint列表,点击右上角齿轮状「设置」图标→选择「列表设置」
- 在「列」分区点击「创建列」
- 列类型选择「数字」,列名自定义(比如加权总和),小数位数按需设置,点击「确定」保存
第二步:创建自动触发的计算流
- 回到列表页,点击顶部导航栏的「集成」→选择「Power Automate」→点击「创建流」
- 在弹出的模板面板中,选中「当创建或修改项目时」模板
- 进入Power Automate编辑界面后,确认站点地址、列表名称匹配你的目标列表,点击「创建」
第三步:配置计算逻辑
- 拆分第一列数值
- 点击「新建步骤」→搜索选择「拆分字符串」操作
- 「要拆分的字符串」选择你存储第一组数值的列名,「分隔符」手动输入英文逗号
,
- 拆分第二列数值
- 点击「新建步骤」→搜索选择「拆分字符串」操作
- 「要拆分的字符串」选择你存储第二组数值的列名,「分隔符」手动输入英文逗号
,
- 初始化累加变量
- 点击「新建步骤」→搜索选择「初始化变量」操作
- 名称填
总和,类型选「整数」(如果数值包含小数就选「浮点数」),初始值填0
- 循环计算累加
- 点击「新建步骤」→搜索选择「应用到每一个」操作
- 「从以前的步骤中选择输出」选择拆分第一列得到的输出结果
- 进入循环内部后,点击「添加操作」→搜索选择「设置变量」
- 名称选刚才创建的
总和,值填写对应表达式:- 数值为整数时:
add(variables('总和'), mul(int(body('拆分字符串')?[iterationIndexes('Apply_to_each')]), int(body('拆分字符串_2')?[iterationIndexes('Apply_to_each')]))) - 数值含小数时:
add(variables('总和'), mul(float(body('拆分字符串')?[iterationIndexes('Apply_to_each')]), float(body('拆分字符串_2')?[iterationIndexes('Apply_to_each')])))
注:如果你的拆分操作系统自动命名不是「拆分字符串」「拆分字符串_2」,对应改成你界面里显示的操作名称即可
- 数值为整数时:
- 回写计算结果到列表
- 点击循环外的「新建步骤」→搜索选择「更新项目」操作
- 站点地址、列表名称选目标列表,「ID」选择触发流的项目ID,刚才新建的结果列选择变量
总和
第四步:保存测试
- 点击编辑界面右上角「保存」,等待保存成功
- 回到SharePoint列表,新建/修改一条包含两个逗号分隔值列的项目,等待10秒左右刷新,即可看到自动计算的结果
可选方案:固定分隔数量时使用原生计算列
如果两列的逗号分隔数值数量永远固定(比如示例中固定为3个),可直接创建计算列,公式参考如下(列名假设为列A、列B,3个值为例):
VALUE(LEFT([列A],FIND(",",[列A])-1)) * VALUE(LEFT([列B],FIND(",",[列B])-1)) + VALUE(MID([列A],FIND(",",[列A])+1,FIND(",",[列A],FIND(",",[列A])+1)-FIND(",",[列A])-1)) * VALUE(MID([列B],FIND(",",[列B])+1,FIND(",",[列B],FIND(",",[列B])+1)-FIND(",",[列B])-1)) + VALUE(RIGHT([列A],LEN([列A])-FIND(",",[列A],FIND(",",[列A])+1))) * VALUE(RIGHT([列B],LEN([列B])-FIND(",",[列B],FIND(",",[列B])+1)))
该方案仅支持固定数量的数值,数值数量变化需对应修改公式。
内容的提问来源于stack exchange,提问作者B.B
相关产品推荐
相关产品推荐

