反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

判断多项字符串至少一项被包含

  • 文档创建者:axing
  • 历史版本:6
  • 最近更新:RosieY 于 2021-01-26
  • 1. 概述

    1.1 应用场景

    有时候我们要判断一个多项字符串是否至少有一项被另外个字符串包含。

    如:有一批货原本是属于"A 供货商,B 供货商"的,结果却被"B 供货商,C 供货商"拼车拉走了。

    这批货有没有出问题呢,只要判断"A 供货商,B 供货商"中是否至少有一项在"B 供货商,C 供货商"中,如果有就没问题。

    222

    1.2 实现思路

    将两个字符串都转化为数组,判断一个数组的每一项是否存在其中一项在另外个数组中,如果有,则包含,否则不包含。

    2. 解决步骤

    1)将字符串1分割成数组:=SPLIT(字符串1,",")
    222

    2)确保第二个字符串转化为数组:=IF(FIND(",", 字符串2) > 0,SPLIT(字符串2,","), ARRAY(字符串2))

    这是因为字符串 2 中如果没有分隔符,则=SPLIT(字符串2,",")的结果还是一个字符串。

    字符串 1 就算没转化成功也能参与后面的运算,就不强制。

    222

    3)判断字符串1转化的数组的每一项是否存在字符串 2 数组中:=GREPARRAY(字符串1数组, INARRAY(item, SPLIT(字符串2数组,",")) > 0)

    这里使用了 INARRAY( ) 函数来判断是否存在, INARRAY( ) 的第二个参数一定要是数组,这就是第二步需要强制转化的原因。

    222

    4)判断上一步结果的项数,项数大于0则包含,否则不包含:=IF(LEN(上一步结果)>0,"包含","不包含")

    222

    5)综合判断公式为:=IF(LEN(GREPARRAY(SPLIT(字符串1,","), INARRAY(item, IF(FIND(",", 字符串2) > 0, SPLIT(字符串2,","), ARRAY(字符串2))) > 0)) > 0, "包含", "不包含")

    222

    3. 示例

    3.1 模板设计

    1)将数据集字段拖到单元格 A2、B2 ,如下图所示:

    2020-12-28_19-19-28.jpg

    2)依次选中 C2~G2 单元格,设置形态公式,如下表所示:

    单元格公式作用
    C2SPLIT(A2,",")将字符串1分割成数组
    D2IF(FIND(",", B2) > 0, SPLIT(B2,","), ARRAY(B2))第二个字符串转化为数组
    E2GREPARRAY(C2, INARRAY(item, SPLIT(D2,",")) > 0)判断字符串1转化的数组的每一项是否存在字符串 2 数组
    F2IF(LEN(E2)>0,"包含","不包含")判断上一步结果的项数,项数大于0则包含,否则不包含
    G2IF(LEN(GREPARRAY(SPLIT(A2,","), INARRAY(item, IF(FIND(",", B2) > 0, SPLIT(B2,","), ARRAY(B2))) > 0)) > 0, "包含", "不包含")整合公式

    2020-12-28_19-22-42.jpg

    3.2 效果预览

    1)PC端

    保存模板,点击PC端预览,如下图所示:

    2020-12-28_19-23-30.jpg

    2)移动端

    1609154731156639.jpg

    4. 模板下载

    附件列表


    主题: 报表专题
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526