Google Sheets中WIDE DATA转TALL DATA的适配公式求解
解决Google Sheets宽表到高表的对应表头数据映射问题
要实现WIDE DATA每行中对应表头的非空数据匹配到TALL DATA的G-O列,核心是按表头文本匹配提取,而非单纯按位置转置。以下是两种实用方案:
方案1:提取第一个非空的对应字段值
适合每行中同一表头仅存在一个非空值的场景,在TALL DATA的G2单元格输入以下数组公式(会自动填充整列及横向O列):
=ARRAYFORMULA( BYROW('WIDE DATA'!S2:DM, LAMBDA(row_data, BYCOL(G1:O1, LAMBDA(target_header, IFERROR(INDEX(FILTER(row_data, 'WIDE DATA'!S1:DM=target_header), 1), "") )) )) )
公式说明:
BYROW('WIDE DATA'!S2:DM, LAMBDA(row_data, ...)):遍历WIDE DATA中S列到DM列的每一行数据BYCOL(G1:O1, LAMBDA(target_header, ...)):遍历TALL DATA中G1到O1的每个目标表头FILTER(row_data, 'WIDE DATA'!S1:DM=target_header):筛选当前行中与目标表头完全匹配的单元格INDEX(...,1):取筛选结果中的第一个非空值,IFERROR处理无匹配值的情况,返回空字符串
方案2:合并所有非空的对应字段值
如果同一表头在一行中有多个非空值,需要合并展示,使用以下公式:
=ARRAYFORMULA( BYROW('WIDE DATA'!S2:DM, LAMBDA(row_data, BYCOL(G1:O1, LAMBDA(target_header, TEXTJOIN("; ", TRUE, FILTER(row_data, 'WIDE DATA'!S1:DM=target_header)) )) )) )
公式说明:
TEXTJOIN("; ", TRUE, ...):将筛选出的所有非空值用分号+空格分隔合并,TRUE参数自动忽略空值
内容的提问来源于stack exchange,提问作者David J. Myers
相关产品推荐
相关产品推荐

