如何在E1单元格用单个公式根据B列日期批量填充对应星期名称
问题背景
- 当前已在D1单元格输入如下公式,提取B列非空日期值填充至D列:
=QUERY(B2:B;"SELECT * where B is not null";-1) - 待实现需求:仅在E1单元格输入单个公式,即可根据对应日期批量填充星期名称,无需在E2输入公式后下拉复制到整列。
- 已知可实现效果但不符合要求的方案:在E2单元格输入
=TEXT(B2;"DDDD")后下拉填充整列。 - 初步猜想:方案需要组合
ARRAYFORMULA、QUERY、TEXT类函数实现,但不确定具体组合写法。
实现方案
直接选择以下任意一个公式粘贴到E1单元格即可生效,适配你当前使用的表格参数分隔规则:
方案1:匹配D列已提取的日期结果
通过ARRAYFORMULA实现整列批量运算,自动和D列的日期行对齐,公式如下:=ARRAYFORMULA(IF(D2:D="";;TEXT(D2:D;"DDDD")))
逻辑说明:
ARRAYFORMULA可以让原本只支持单单元格计算的函数对整块区域批量执行运算,不需要逐行下拉填充IF(D2:D="";;TEXT(...))做判空处理,D列无日期的行E列自动留空,不会返回错误值TEXT(D2:D;"DDDD")负责将日期格式化为完整星期名称
方案2:不依赖D列,直接从B列生成结果
利用QUERY自带的FORMAT格式化子句,在提取B列非空值的阶段直接输出星期文本,不需要额外嵌套其他函数,公式如下:=QUERY(B2:B;"SELECT * where B is not null FORMAT B 'DDDD'";-1)
该公式输出的星期顺序和D列提取的日期顺序完全一致,不会出现行错位问题。
内容的提问来源于stack exchange,提问作者Mountain Spring
相关产品推荐
相关产品推荐

