【发布时间】:2021-04-28 00:48:35
【问题描述】:
我有 3 列数据,需要连接同一列的两个值,但按单独的列(A 列)分组。在下面的示例中,我需要将品牌 + 产品类型(C 列)组合在一起,得到总共 66 个连接值。
如何获得所需的串联值?我需要合并数千个。
ABC 扩散器
ABC 冷热疗法
ABC 加湿器
DEF 油
DEF 扩散器
DEF 蜡烛
DEF 空气清新剂
等等
【问题讨论】:
标签: excel concatenation vlookup
我有 3 列数据,需要连接同一列的两个值,但按单独的列(A 列)分组。在下面的示例中,我需要将品牌 + 产品类型(C 列)组合在一起,得到总共 66 个连接值。
如何获得所需的串联值?我需要合并数千个。
ABC 扩散器
ABC 冷热疗法
ABC 加湿器
DEF 油
DEF 扩散器
DEF 蜡烛
DEF 空气清新剂
等等
【问题讨论】:
标签: excel concatenation vlookup
此解决方案适用于支持 LET 和动态数组的 Excel 版本
为了节省空间,我稍微减少了你的数据,但这应该会给你一个想法。
黄色单元格有公式,其余的是溢出的动态数组。
G2 水平列出唯一标题。 =TRANSPOSE(UNIQUE(A3:A12))
G3 列出了所有的扩散器组合。
=LET(titleList,$A$3:$A$12,
groupList,$B$3:$B$12,
nameList,$C$3:$C$12,
Title,G2,
brandList,TRANSPOSE(FILTER(nameList,(titleList=Title)*(groupList="Brand"))),
productType,FILTER(nameList,(titleList=Title)*(groupList="Product Type")),
combos,brandList&" "&productType,
numRows,ROWS(combos),
numCols,COLUMNS(combos),
outRows,SEQUENCE(numRows*numCols),
INDEX(combos,MOD(outRows-1,numRows)+1,INT((outRows-1)/numRows)))
H3 列出了所有精油组合。它是G3复制的。
A1 显示每个标题的组合的最大长度。 =MAX(COUNTIFS($A$3:$A$12,G2#,$B$3:$B$12,"Brand")*COUNTIFS($A$3:$A$12,G2#,$B$3:$B$12,"Product Type"))
E3 列出了所有独特的组合。
=LET(numRows,A1,
numCols,COLUMNS(G2#),
data,OFFSET(G3,0,0,numRows,numCols),
outRows,SEQUENCE(numRows*numCols),
oneCol,INDEX(data,MOD(outRows-1,numRows)+1,INT((outRows-1)/numRows)+1),
FILTER(oneCol,oneCol<>0))
【讨论】: