Google Sheets ArrayFormula应用咨询:多场景需求实现求助
Google Sheets ArrayFormula 实现方案
以下是针对需求的具体公式实现,假设源数据范围为 A2:F(对应列:A=日期、B=姓名、C=职位、D=是否发奖金、E=奖金金额):
1. 按日期从最新到最旧排序
=ArrayFormula(SORT(A2:F, 1, FALSE))
- 说明:
SORT函数按第1列(日期列)降序排列,FALSE表示降序(最新日期在前)。
2. 提取职位列括号内的内容到新列
=ArrayFormula(IF(C2:C="", "", REGEXEXTRACT(C2:C, "\((.*?)\)")))
- 说明:通过正则表达式
\((.*?)\)匹配括号内的内容,若职位列为空则返回空值。
3. 职位列含指定关键词则置空,其余保留
=ArrayFormula(IF(REGEXMATCH(C2:C, "Major|Minority|Director"), "", C2:C))
- 说明:若职位内容包含「Major(主要)」「Minority(少数)」「Director(主管)」任一关键词,返回空值,否则保留原职位内容。
4. 指定姓名分组生成含指定字段的排序表格(以「约翰逊·D·佐伊」为例)
=ArrayFormula({ "日期", "是否发奖金", "奖金金额"; SORT(FILTER({A2:A, D2:D, E2:E}, B2:B="约翰逊·D·佐伊"), 1, FALSE) })
- 说明:先通过
FILTER筛选指定姓名的记录,仅保留日期、是否发奖金、奖金金额字段,再按日期降序排序,最后添加表头。
5. 筛选特定时间范围且奖金为「是」的记录
过去30天内的符合记录
=ArrayFormula({ "日期", "是否发奖金", "奖金金额", "姓名", "职位"; SORT(FILTER(A2:F, D2:D="Y", A2:A>=TODAY()-30), 1, FALSE) })
- 说明:筛选奖金为「是」且日期在过去30天内的记录,保留指定字段并按日期降序排序。
2023年全年的符合记录
=ArrayFormula({ "日期", "是否发奖金", "奖金金额", "姓名", "职位"; SORT(FILTER(A2:F, D2:D="Y", YEAR(A2:A)=2023), 1, FALSE) })
- 说明:筛选奖金为「是」且日期属于2023年的记录,保留指定字段并按日期降序排序。
内容的提问来源于stack exchange,提问作者HelpMePlease
相关产品推荐
相关产品推荐

