如何在Google Sheets中扁平化含动态行的层级表格?
解决方法
首先需要补全原数据中的Ad_id列空缺值——原数据里只有每个广告属性组的第一行有ID,后续行是空的,这是导致你之前公式失效的核心原因。
步骤1:补全Ad_id列
在空白列(比如D列)输入以下公式,自动填充所有空缺的Ad_id:
=ARRAYFORMULA(IF(A:A="",LOOKUP(ROW(A:A),ROW(A:A)*(A:A<>""),A:A),A:A))
逻辑:如果A列单元格为空,就向上查找最近的非空Ad_id填充;如果本身非空则保留原值。
步骤2:生成宽格式数据
有两种实现方式:
方式一:用QUERY一键生成(推荐)
在新区域输入以下公式,会自动生成包含所有Ad_id、属性表头和对应值的完整宽表,缺失值显示为null,可手动替换成NA:
=QUERY(FILTER({D:D, B:C}, D:D<>""), "select Col1, max(Col3) where Col1 is not null group by Col1 pivot Col2")
{D:D, B:C}:将补全后的Ad_id列、原属性列和值列合并为新数组pivot Col2:按属性列转置成表头max(Col3):因每个Ad_id对应单个属性仅一个值,用max/min均可正确提取
方式二:结合你已有的Ad_id列和表头提取值
若已手动生成Ad_id列(比如F列)和属性表头(比如G1:K1),在G2单元格输入以下公式,向右向下拖拽(或用ARRAYFORMULA批量填充):
=IFERROR(INDEX(C:C, MATCH(1, (D:D=F2)*(B:B=G$1), 0)), "NA")
用IFERROR将找不到的值替换为NA,这里的D列是补全后的Ad_id列,即可正确匹配每个Ad_id对应的属性值。
内容的提问来源于stack exchange,提问作者Sky
相关产品推荐
相关产品推荐

