我有一份包含所有产品规格的电子表格。一组列通过在单元格中输入 X(或“是”)或任何字符来指示产品具有哪些认证。(屏幕截图中的 AD 列)

以屏幕截图为例,我想要做的是,有另一组列 (EH) 引用列 AD 并填充适用的认证图像路径,从左侧填充它们。所以不应该有空隙。

对于屏幕截图,我手动输入了 EH 单元格以显示所需的结果。我还缩短了文本,这样图像就不会太宽。图像路径应该类似于“/volume/marketing/certs/UL.png”。

我有第一列要使用: =IF(ISBLANK(A10),(IF(ISBLANK(B10),(IF(ISBLANK(C10),(IF(ISBLANK(D10),””,”UL-C”)),”ESTAR”)),”EMF”)),”UL”)

我一直在尝试对 FH 列使用嵌套的 IF 和 ISBLANK 公式,但很明显这将是一个很长的公式,因此在继续使用嵌套的 IF/ISBLANK 方法之前,我想看看是否有更简单的方法。

谢谢!

1

  • 1


    – 


最佳答案
4

这是您需要使用FILTER()函数执行的操作:


=FILTER($A$1:$D$1,A2:D2<>"","")

或者,单个数组公式:

=LET(
     a, A2:D8,
     IFNA(DROP(REDUCE("",SEQUENCE(ROWS(a)),LAMBDA(x,y,
     VSTACK(x,FILTER(A1:D1,INDEX(a,y,)<>"","")))),1),""))

2

  • 谢谢 Mayukh。我在我的示例文件中尝试了此操作,并且它按描述工作,尽管如果该行现在没有认证被选中,我会收到 #CALC!错误。


    – 

  • @SeanLarkin 您需要指定FILTER()函数的最后一个参数以避免#CALC!错误:=FILTER($A$1:$D$1,A2:D2<>"","")请立即尝试


    – 


  • 使用映射认证

    • REPT(certs, has_cert),其中has_cert= 1 表示非空
  • 使用将值“压缩”到左侧

  • 定义一个表来保存图像路径 – 例如’imgPath’

    • 然后XLOOKUP(certs_maped,imgPath[Cert], imgPath[Path])
证书 小路
电磁场 /volume/marketing/certs/EMF.png
艾斯达 /volume/marketing/certs/ESTAR.png
UL /volume/marketing/certs/UL.png
UL-C /volume/marketing/certs/UL-C.png
=LET(certs, A1:D1, has_cert, --(A2:D8 <> ""),
    certs_maped, IF(has_cert, REPT(certs, has_cert), NA()),
    img_paths, XLOOKUP(certs_maped,imgPath[Cert], imgPath[Path]),
    acc_left, REDUCE(
        "Collect to left",
        SEQUENCE(ROWS(img_paths)),
        LAMBDA(acc,r, VSTACK(acc, IFERROR(TOROW(INDEX(img_paths, r, ), 2), "")))
    ),
    IFNA(DROP(acc_left, 1), "")
)

10

  • 谢谢 nkalvi。我尝试了这个公式,它运行良好,但当我有一行产品没有任何认证时,因此没有检查任何内容。当发生这种情况时,所有 cert img 列都变为空白,我在单元格 E2 中得到了 #CALC!。


    – 

  • @SeanLarkin – 我已经更新了答案,有机会时请检查一下。


    – 

  • 好了,不再出现 CALC 错误。谢谢。我可以解决这个问题,但我有一个后续问题,只是出于好奇。有没有办法将图像路径编码到公式中,而不是根据 AD 的标题行构建它们?如果这太复杂而无法得到友好的帮助,那么不用担心;您的公式已经是我需要的解决方案。


    – 

  • @SeanLarkin,很高兴您问到这个问题 🙂 – 定义一个简单的 1) 在名称管理器 > 新建img_path(可以是任何名称)中将名称作为=LAMBDA(filename, "/volume/marketing/certs/" & filename & ".png")公式(引用)。然后您可以在工作簿中的任何位置使用单个或多个参数;例如=img_path("UL-C")或 =img_path(a2:a10)`。


    – 

  • 1
    @SeanLarkin,转到表格选项卡或名称管理器,确保表格已命名imgPath(默认为 Tablexx)。列名称需要为CertPath。当然,您可以更改其中任何一项,但需要更新公式。请让我知道进展如何。


    – 

将不需要的值移到右侧第 2 卷

  • 您的问题类似于对
=LET(table,A1:D11,
    dd,DROP(table,1),
    d,IF(dd="","",TAKE(table,1)),
    rc,ROWS(d),
    cc,COLUMNS(d),
    WRAPROWS(SORTBY(TOCOL(d),TOCOL(SEQUENCE(rc,cc)
        +SEQUENCE(rc)*cc+(d="")*cc)),cc))

在单元格 E2 中添加:=IF(ISBLANK(A2),””,$A$1)

对于第 2 行的第一个单元格,在其余数据中,IF 公式最后一部分中锁定的单元格范围需要更改为单元格 A1 至 D1 中的相应值。如果是表格,则应可以使用快速填充,或者从右下角向下拖动公式。