根据唯一文本匹配将多行文本合并为一个单元格?

时间:2016-06-30 19:57:39

标签: google-sheets

我有一张这样的表:

Data Set

根据这个集合,我需要"简要记录"对于每个唯一的SKU前缀,例如本例中为PW0007和PW0008)。这是一个例子:

Desired Result 如果这很难理解,这里是上面一个变量输出(G1)的例子:

sku = PW0007BG-3x6-M,颜色=米色,尺寸= 3x6,完成=磨砂,外观=木材,应用=墙壁或地板| sku = PW0007BK-3x6-M,颜色=黑色,尺寸= 3x6,完成=磨砂,外观=木材,应用=墙面或地板| sku = PW0007RD-4x8-P,颜色=红色,尺寸= 4x8,表面处理=抛光,外观=木材,应用=墙面或地板

还有一点是我在单独的工作表上将SKU字段分解成各个部分,这样我就可以轻松地执行UNIQUE()并获得前缀PW0007和PW0008,如果这是最好的方法。它获取每个唯一SKU前缀的变体并将它们分开,这是我无法想象的。也许某种SUMPRODUCT?

我想通过一个公式来实现梦想,但是我更倾向于认为我需要某种类型的脚本,这是一个完整的蜡球。对我来说。

1 个答案:

答案 0 :(得分:2)

你不需要这个脚本;电子表格公式的组合就足够了。为简单起见,我假设您的数据位于A-F列,输出将位于同一张表的G-H中。

首先,生成一个唯一前缀列表。假设它们是SKU的前6个字符,则公式(放在G2中)将是

=sort(unique(filter(left(A2:A, 6), len(A2:A))))

(sort是可选的,但在此上下文中有意义)。过滤器会删除空行。

然后在下一栏中,在单元格H2中使用这个较长的公式,此处显示换行符。

=join("|", arrayformula("sku=" & filter(A2:A, left(A2:A, 6) = G2)  
    & ",color=" & filter(B2:B, left(A2:A, 6) = G2)
    & ",size=" & filter(C2:C, left(A2:A, 6) = G2)
    & ",finish=" & filter(D2:D, left(A2:A, 6) = G2)
    & ",look=" & filter(E2:E, left(A2:A,6) = G2)
    & ",application=" & filter(E2:E, left(A2:A,6) = G2)
))

尽管篇幅很长,但它非常简单:用SKU前缀过滤每一列,在其前面加上描述,然后连接结果。最后一步是加入所有这些结果。

需要将H2中的公式拖到H列。