如何在Google Sheets中提取唯一名称及对应按时间排序的所有日期?
用Google Sheets内置函数实现动态唯一名称+降序日期列表
步骤1:提取所有唯一名称
在目标工作表的A1单元格输入以下公式,自动提取参考表中所有非空的唯一名称:
=UNIQUE(FILTER(FLATTEN(参考表!B:Z), FLATTEN(参考表!B:Z)<>""))
- 替换
参考表!B:Z为你实际存放名称的列范围(比如名称在B到D列就改成参考表!B:D) - 功能拆解:
FLATTEN把多列名称合并成单列,FILTER过滤掉空值,UNIQUE去重得到唯一名称列表
步骤2:生成对应降序日期列表
在目标工作表的B1单元格输入以下公式,自动为每个名称匹配所有出现过的日期,按从新到旧排序后用逗号分隔:
=BYROW(A:A, LAMBDA(name, IF(name="", "", TEXTJOIN(", ", TRUE, SORT(FILTER(参考表!A:A, BYROW(参考表!B:Z, LAMBDA(r, OR(r=name)))), 1, FALSE)))))
- 替换
参考表!A:A为你的日期列范围,参考表!B:Z为名称列范围 - 公式拆解:
BYROW(A:A, ...)遍历A列的每个名称BYROW(参考表!B:Z, LAMBDA(r, OR(r=name)))判断参考表每行是否包含当前名称FILTER(参考表!A:A, ...)提取所有匹配行的日期SORT(..., 1, FALSE)将日期按降序(新到旧)排列TEXTJOIN(", ", TRUE, ...)把排序后的日期合并成逗号分隔的列表,自动忽略空值
动态更新特性
当参考表新增行(含新日期、新名称)时,目标表会自动同步:
- 新增的名称会自动加入A列的唯一列表
- 已有名称的新日期会自动追加到对应B列的列表并重新排序
注意事项
- 如果名称列存在空单元格,
FILTER会自动过滤,避免出现空的唯一名称 - 确保日期列是标准日期格式(选中日期列→格式→数字→日期),否则排序会出错
内容的提问来源于stack exchange,提问作者roamin
相关产品推荐
相关产品推荐

