Google Sheets:A列空单元格用上方最近非空值与B列合并
Google Sheets 合并列并继承上方非空值优化SEO
问题核心
需要合并A列(空值自动继承最近上方非空值)与B列,将所有空格、特殊字符替换为连字符并转小写,生成SEO友好的字符串。原公式仅处理A列非空的情况,空值时无法正确合并。
解决方案公式
=ARRAYFORMULA( IF(B:B="", "", LOWER( REGEXREPLACE( REGEXREPLACE( VLOOKUP(ROW(A:A), FILTER({ROW(A:A), A:A}, A:A<>""), 2, TRUE) & "-" & B:B, "[^a-zA-Z0-9]", "-" ), "-+", "-" ) ) ) )
公式拆解
VLOOKUP(ROW(A:A), FILTER({ROW(A:A), A:A}, A:A<>""), 2, TRUE):通过行号匹配,为每行自动查找上方最近的非空A列值,解决空值继承问题。REGEXREPLACE(..., "[^a-zA-Z0-9]", "-"):将所有非字母、数字的字符(包括空格、特殊符号)统一替换为连字符。REGEXREPLACE(..., "-+", "-"):合并连续的多个连字符为单个,避免出现--这类无效格式。LOWER():将最终字符串转为全小写,符合SEO URL的规范。IF(B:B="", "", ...):跳过B列为空的行,避免生成无意义的连字符字符串。
使用说明
- 将公式粘贴到目标列的第一行(比如C1),
ARRAYFORMULA会自动应用到整列。 - 如果需要保留特定字符(比如下划线),可以修改第一个正则表达式为
"[^a-zA-Z0-9_]"。
内容的提问来源于stack exchange,提问作者Liam
相关产品推荐
相关产品推荐

