如何在Google Sheets中提取指定姓名的预订日期并生成计费收据
Google Sheets 提取指定姓名日期并生成收据方案
一、提取指定姓名的所有预订日期
Lookup函数仅能返回单个匹配结果,要提取所有对应日期,可使用以下两种函数实现:
1. FILTER函数(直观易上手)
假设预订数据在Sheet1:A列存姓名,B列存原始日期
公式:
=FILTER(TEXT(Sheet1!B:B, "dd.mm"), Sheet1!A:A="srna")
TEXT(Sheet1!B:B, "dd.mm"):将原始日期转换为05.08的格式Sheet1!A:A="srna":设置筛选条件,匹配姓名为srna的行
执行后会自动列出所有符合条件的日期,保持原数据顺序。
若需将日期合并为一行逗号分隔的文本,用TEXTJOIN嵌套:
=TEXTJOIN(", ", TRUE, FILTER(TEXT(Sheet1!B:B, "dd.mm"), Sheet1!A:A="srna"))
2. QUERY函数(适合复杂筛选场景)
公式:
=QUERY(Sheet1!A:B, "SELECT TEXT(B, 'dd.mm') WHERE A='srna'")
通过类SQL语法完成筛选与日期格式化,结果和FILTER函数一致。
二、关联另一表格计算费用
假设费用数据在Sheet2:A列存日期(需与Sheet1原始日期格式一致),B列存单日费用
1. 批量获取对应日期的费用
用ARRAYFORMULA+VLOOKUP实现批量匹配:
=ARRAYFORMULA(VLOOKUP(FILTER(Sheet1!B:B, Sheet1!A:A="srna"), Sheet2!A:B, 2, FALSE))
该公式会返回每个匹配日期对应的费用,与提取的日期一一对应。
2. 计算总费用
直接对批量匹配的费用结果求和:
=SUM(ARRAYFORMULA(VLOOKUP(FILTER(Sheet1!B:B, Sheet1!A:A="srna"), Sheet2!A:B, 2, FALSE)))
三、生成含日期的收据
可新建工作表(命名为收据)进行排版,示例结构:
- 客户姓名:srna(可直接输入或引用姓名单元格)
- 预订日期:
=TEXTJOIN(", ", TRUE, FILTER(TEXT(Sheet1!B:B, "dd.mm"), Sheet1!A:A="srna")) - 总费用:
=SUM(ARRAYFORMULA(VLOOKUP(FILTER(Sheet1!B:B, Sheet1!A:A="srna"), Sheet2!A:B, 2, FALSE)))
若需要更正式的收据样式,可通过合并单元格、添加边框等操作优化排版。
内容的提问来源于stack exchange,提问作者Free Lancer
相关产品推荐
相关产品推荐

