如何在Google Sheets中用公式实现每行首字符串与该行元素拼接并转置
解决方案:单个单元格动态生成唯一ID
直接使用Excel 365/Google Sheets的溢出函数组合,无需AppScript,自动适配表格增长:
=TOCOL(BYROW(A2:INDEX(A:A,COUNTA(A:A)),LAMBDA(row, MAP(DROP(row,1), LAMBDA(cell, INDEX(row,1)&cell)))), 3)
公式说明:
A2:INDEX(A:A,COUNTA(A:A)):动态捕获所有有数据的行,表格新增行时自动扩展范围BYROW(..., LAMBDA(row, ...)):逐行处理数据DROP(row,1):剔除每行的第一个前缀单元格,保留需要拼接的后续内容MAP(..., LAMBDA(cell, INDEX(row,1)&cell)):将每行的前缀与后续每个单元格内容拼接,生成该行的所有唯一IDTOCOL(..., 3):把所有行的拼接结果合并为一列,自动忽略空值(避免无效ID)
使用方法:
在空白单元格(比如E2)粘贴公式,结果会自动纵向溢出显示所有唯一ID,后续新增数据行时,公式会自动更新输出。
如果使用的是无LAMBDA函数的旧版Excel,可以用以下数组公式(输入后按Ctrl+Shift+Enter):
=INDEX(IFERROR($A$2:$A$100&OFFSET($B$2:$B$100,0,COLUMN($B$2:$Z$100)-COLUMN($B$2)),""),SMALL(IF($A$2:$A$100<>"",ROW($A$2:$A$100)-ROW($A$2)+1),ROW(A1)))
注:旧版公式需要手动调整范围(比如$A$2:$A$100),不如365公式灵活。
内容的提问来源于stack exchange,提问作者Hemanth Kamath
相关产品推荐
相关产品推荐

