CrabNote螃蟹笔记

终于更新了,这篇万字飞书多维表格公式保姆级教程,手把手教会你

终于更新了,这篇万字飞书多维表格公式保姆级教程,手把手教会你

终于更新了,这篇万字飞书多维表格公式保姆级教程,手把手教会你 终于更新了,这篇万字飞书多维表格公式保姆级教程,手把手教会你 Modified January 18 场景二:写出漂亮的业务陈述句。 你想生成一句话:“2023/10/01购入 库存充足”。这需要把日期格式化,再用 & 拼接。 公式:TEXT([购入日期], "YYYY/MM/DD") & "购入" & " " & [库存情况] 场景三:计算工时并格式化。 算出下班和上班的时间差,然后显示成 08:30 这样的格式。 公式:TEXT([下班时间] [上班时间], "hh:mm") 如果你是在算跨时区或者跨天的大时间差,比如项目耗时多少小时,记得给 h 加个中括号,像这样 TEXT([日期1] [日期2], "[h]"),它就能显示超过24小时的总时长了。 场景四:工号自动补零。 员工编号是 5,你想显示成 0005。 公式:TEXT([编号], "0000") 甚至你还可以处理身份证号,比如提取出生日后,转成 0 00 00 这种特殊格式。 这里有两点关于 TEXT 函数的冷知识,大家务必拿小本本记下来,能帮你避开 90% 的坑。 第一,TEXT 函数生成的是“文本”而不是“数字”。这就好比你写了一个“100”在纸上,它长得像数字,但你不能拿它去计算器里做加减法。所以,如果你想把 TEXT 处理过的结果再拿去 SUM() 求和,是算不出来的。如果非要算,得用 VALUE() 函数把它变回真数字。 第二,讨厌的“时间小尾巴”。很多时候公式算出来的日期会带着 00:00:00 这种时间,特别碍眼。最简单的消灭办法,其实根本不用改公式,直接双击那一列的表头,在“字段格式”里选择纯日期格式就行了。当然,如果你非要在公式里改,用 TEXT([你的结果], "YYYY MM DD") 也能强行给它改回来。 既然我们已经在整理数据格式了,那就不得不提数据清洗中最重要的一个环节:去重。 UNIQUE 函数,人如其名,就是用来消除重复,保留唯一值的。 这在数据录入混乱的时候,简直就是救命稻草。 场景一:简单的去重。 假设你有一列“货品列表”,因为手抖,有些货品被录了好几次。你想拿到一份干干净净的、无重复的货品清单。 公式:UNIQUE([数据表].[货品列表]) 注意,这个函数不会排序,它只是忠实地把重复的项踢掉。比如 UNIQUE(1, 1, 2, 3) 出来的结果是 1, 2, 3。 场景二:统计“实际到访”的客户数(去重计数)。 这是一个非常经典的业务难题:你的“客户信息管理表”里,每天都有销售录入新的跟进记录。同一个公司可能被录入了多次。现在老板问你:“今天到底有多少家不同的公司被录入了?” 如果直接数行数(COUNTA),那肯定多了,因为有重复。这时候,我们需要一套组合拳:FILTER + UNIQUE + COUNTA。 第一步:筛选(FILTER)。 先把“今天”录入的所有记录找出来。 [客户信息管理].FILTER(CurrentValue.[录入日期]=[日期]) 第二步:去重(UNIQUE)。 在筛选出来的结果里,只看“公司名称”这一列,并把重复的名字去掉。 UNIQUE(....[公司名称]) 第三步:计数(COUNTA)。 最后,数一数去重后的名单里有几个名字。 ....COUNTA() 把它们连起来,就是这个威力巨大的公式: UNIQUE([客户信息管理].FILTER(CurrentValue.[录入日期]=[日期]).[公司名称]).COUNTA() 这行公式翻译成人话就是:在客户表里,找出今天录入的所有公司名字,去掉重复的,然后数数有几个。 说到处理列表,我们还有一个真正的黑科技:MAP 函数。 刚才我们用 ARRAYJOIN 把数据粘起来,用 LIST 把数据打包。但如果我想批量修改列表里的每一个数据,该怎么办? 比如,你有一份“书籍清单”,已经按类别筛选好了,现在你想给每本书的名字加上书名号《》。在以前,你可能需要先把书名提出来,处理好再放回去,非常麻烦。 现在,MAP 函数就是你的批量加工流水线。它接收一组数据,然后对这组数据里的每一个元素执行相同的操作。 公式逻辑是这样的:MAP(你要处理的一堆数据, 这里的CurrentValue要怎么变)。 场景:给书名批量加书名号。 假设你已经用 FILTER 筛选出了一组书名。现在,直接在后面接上 MAP: [书籍清单].FILTER(...).[书名].MAP("《" & CurrentValue & "》") 这里的 CurrentValue 指代的是列表里的每一本书名。MAP 会像一个个勤劳的工人,给第一本书加上书名号,再给第二本加上……最后返回一个新的、带书名号的列表。 简单案例: 你想把一组字母 "a", "b" 全部变成大写。 公式:MAP(LIST("a", "b"), UPPER(CurrentValue)) 结果就是 "A", "B"。 注意,MAP 有个天条:禁止套娃。 MAP 函数不支持嵌套使用,MAP 里不能再写 MAP,否则会直接报错。这一点一定要记在心里。 当然,我知道即使我说了这么多,你可能还是记不住这些函数。 没关系,承认自己记不住,才是专业的开始。 现在的多维表格已经进化了。你不需要苦哈哈地去背函数表。进入数据表,新建一个公式字段,点击编辑公式。注意看,公式编辑器里除了常规的编辑区,旁边多了一个 AI 生成公式 的标签页。我们之前在基础教程系列文章里其实就讲过,这证明我们文章的含金量还在上升。 点进这个标签页,世界瞬间清净了。你只需要在输入框里用大白话写下你的指令,比如“统计本月商品的销售量”或者“帮我算一下这两个日期之间隔了几个月”,你也可以直接使用系统推荐的指令。点击生成,AI 不仅会直接把代码写好给你,还会贴心地把公式生成过程的解释列出来,让你知其然更知其所以然。 觉得没问题,点一下 采纳,那串复杂的代码就会自动填入编辑框,点击确认即可。这才是该有的样子,工具是为人服务的,而不是让人去伺候工具。不过要提醒一句,这个 AI 功能每个月是有免费额度的,虽然对大部分人来说够用了,但如果是企业级的高频调用,超出后可能需要消耗企业购买的 AI 额度。 场景二:写出漂亮的业务陈述句。 你想生成一句话:“2023/10/01购入 库存充足”。这需要把日期格式化,再用 & 拼接。 公式:TEXT([购入日期], "YYYY/MM/DD") & "购入" & " " & [库存情况] 场景三:计算工时并格式化。 算出下班和上班的时间差,然后显示成 08:30 这样的格式。 公式:TEXT([下班时间] [上班时间], "hh:mm") 如果你是在算跨时区或者跨天的大时间差,比如项目耗时多少小时,记得给 h 加个中括号,像这样 TEXT([日期1] [日期2], "[h]"),它就能显示超过24小时的总时长了。 场景四:工号自动补零。 员工编号是 5,你想显示成 0005。 公式:TEXT([编号], "0000") 甚至你还可以处理身份证号,比如提取出生日后,转成 0 00 00 这种特殊格式。 这里有两点关于 TEXT 函数的冷知识,大家务必拿小本本记下来,能帮你避开 90% 的坑。 第一,TEXT 函数生成的是“文本”而不是“数字”。这就好比你写了一个“100”在纸上,它长得像数字,但你不能拿它去计算器里做加减法。所以,如果你想把 TEXT 处理过的结果再拿去 SUM() 求和,是算不出来的。如果非要算,得用 VALUE() 函数把它变回真数字。 第二,讨厌的“时间小尾巴”。很多时候公式算出来的日期会带着 00:00:00 这种时间,特别碍眼。最简单的消灭办法,其实根本不用改公式,直接双击那一列的表头,在“字段格式”里选择纯日期格式就行了。当然,如果你非要在公式里改,用 TEXT([你的结果], "YYYY MM DD") 也能强行给它改回来。 既然我们已经在整理数据格式了,那就不得不提数据清洗中最重要的一个环节:去重。 UNIQUE 函数,人如其名,就是用来消除重复,保留唯一值的。 这在数据录入混乱的时候,简直就是救命稻草。 场景一:简单的去重。 假设你有一列“货品列表”,因为手抖,有些货品被录了好几次。你想拿到一份干干净净的、无重复的货品清单。 公式:UNIQUE([数据表].[货品列表]) 注意,这个函数不会排序,它只是忠实地把重复的项踢掉。比如 UNIQUE(1, 1, 2, 3) 出来的结果是 1, 2, 3。 场景二:统计“实际到访”的客户数(去重计数)。 这是一个非常经典的业务难题:你的“客户信息管理表”里,每天都有销售录入新的跟进记录。同一个公司可能被录入了多次。现在老板问你:“今天到底有多少家不同的公司被录入了?” 如果直接数行数(COUNTA),那肯定多了,因为有重复。这时候,我们需要一套组合拳:FILTER + UNIQUE + COUNTA。 第一步:筛选(FILTER)。 先把“今天”录入的所有记录找出来。 [客户信息管理].FILTER(CurrentValue.[录入日期]=[日期]) 第二步:去重(UNIQUE)。 在筛选出来的结果里,只看“公司名称”这一列,并把重复的名字去掉。 UNIQUE(....[公司名称]) 第三步:计数(COUNTA)。 最后,数一数去重后的名单里有几个名字。 ....COUNTA() 把它们连起来,就是这个威力巨大的公式: UNIQUE([客户信息管理].FILTER(CurrentValue.[录入日期]=[日期]).[公司名称]).COUNTA() 这行公式翻译成人话就是:在客户表里,找出今天录入的所有公司名字,去掉重复的,然后数数有几个。 说到处理列表,我们还有一个真正的黑科技:MAP 函数。 刚才我们用 ARRAYJOIN 把数据粘起来,用 LIST 把数据打包。但如果我想批量修改列表里的每一个数据,该怎么办? 比如,你有一份“书籍清单”,已经按类别筛选好了,现在你想给每本书的名字加上书名号《》。在以前,你可能需要先把书名提出来,处理好再放回去,非常麻烦。 现在,MAP 函数就是你的批量加工流水线。它接收一组数据,然后对这组数据里的每一个元素执行相同的操作。 公式逻辑是这样的:MAP(你要处理的一堆数据, 这里的CurrentValue要怎么变)。 场景:给书名批量加书名号。 假设你已经用 FILTER 筛选出了一组书名。现在,直接在后面接上 MAP: [书籍清单].FILTER(...).[书名].MAP("《" & CurrentValue & "》") 这里的 CurrentValue 指代的是列表里的每一本书名。MAP 会像一个个勤劳的工人,给第一本书加上书名号,再给第二本加上……最后返回一个新的、带书名号的列表。 简单案例: 你想把一组字母 "a", "b" 全部变成大写。 公式:MAP(LIST("a", "b"), UPPER(CurrentValue)) 结果就是 "A", "B"。 注意,MAP 有个天条:禁止套娃。 MAP 函数不支持嵌套使用,MAP 里不能再写 MAP,否则会直接报错。这一点一定要记在心里。 当然,我知道即使我说了这么多,你可能还是记不住这些函数。 没关系,承认自己记不住,才是专业的开始。 现在的多维表格已经进化了。你不需要苦哈哈地去背函数表。进入数据表,新建一个公式字段,点击编辑公式。注意看,公式编辑器里除了常规的编辑区,旁边多了一个 AI 生成公式 的标签页。我们之前在基础教程系列文章里其实就讲过,这证明我们文章的含金量还在上升。 点进这个标签页,世界瞬间清净了。你只需要在输入框里用大白话写下你的指令,比如“统计本月商品的销售量”或者“帮我算一下这两个日期之间隔了几个月”,你也可以直接使用系统推荐的指令。点击生成,AI 不仅会直接把代码写好给你,还会贴心地把公式生成过程的解释列出来,让你知其然更知其所以然。 觉得没问题,点一下 采纳,那串复杂的代码就会自动填入编辑框,点击确认即可。这才是该有的样子,工具是为人服务的,而不是让人去伺候工具。不过要提醒一句,这个 AI 功能每个月是有免费额度的,虽然对大部分人来说够用了,但如果是企业级的高频调用,超出后可能需要消耗企业购买的 AI 额度。 既然说到这儿,说到钱的事儿我就多说一嘴。咱们得把账算细一点,毕竟谁也不想莫名其妙把公司的额度刷爆。 首先,刚才提到的那个 AI 生成公式功能,每点击一次生成,消耗的是 3个 AI 点数。但这只是冰山一角。多维表格里的 AI 其实无处不在,它们的计费规则也各不相同。 比如很多朋友喜欢用的 AI 字段捷径,那个是按行收费的。如果你有 1000 行数据,生成一次就是单次消耗乘以 1000。而且千万要注意,刷新单元格会让 AI 重新干活,这也会再次扣点,别手抖。 如果你用的是火山引擎提供的捷径,默认是没有免费额度的,直接走企业的账。除非你去配置面板里关联自己的火山引擎账号,那样就可以用那边的免费额度。 再比如更进阶的 自动化和工作流。如果你是用 AI 对话来智能创建或修改工作流,每次对话的基础消耗是 3点,再加上模型思考产生的费用。但一旦工作流跑起来,里面的 AI 节点(比如生成文本、分类)其实很便宜,运行一次才 0.1点。不过要是你在节点里加了 仪表盘 AI 智能总结,那个贵一点,一次 2点。至于仪表盘上的 智能分析 按钮,点一下出结果是 0.5点。 心里有数,才能用得从容。 写在最后 我一直坚持一个观点:不要为了学工具而学工具,要为了解决问题而学。 当我们把公式从数学题还原成业务逻辑,你会发现它一点都不难。它是你业务规则的数字化投影,是你从繁琐的计算中解脱出来的契机。 不要试图一口气背下所有函数,遇到一个问题,解决一个问题,积累一个模版。慢慢的,你会建立起属于你自己的数字化资产。 同时,还是那句话,光看不练假把式。为了让你真的能落地实战,我把咱们今天聊的这些内容,连同我压箱底的经验,全部整理在了开源的飞书知识库。都在里面了:https://vantasma.feishu.cn/wiki/space/7574356946532925441?ccm open type=lark wiki spaceLink&open tab from=wiki home 觉得有用的话,记得关注我,点个在看。咱们下一篇见。 公众号原文链接:https://mp.weixin.qq.com/s/fJqK QLUdNTHcUfM FXUHw 公众号原文链接:https://mp.weixin.qq.com/s/fJqK QLUdNTHcUfM FXUHw 大家好,我是祥瑞,深耕飞书多维表格,专注 AI 落地实战,只解决业务里的真问题。 去年我们写了五篇飞书多维表格的保姆级教程,到现在已经五篇了,受到了很多小伙伴催更的消息哈哈。这一周虽然我更了几篇比较有难度的文章,但回头一看,发现还是有很多朋友在基础的门槛外徘徊。前几天有小伙伴在群里说,希望能再出一些基础内容的讲解。 这我才意识到,今年其实还没有认真更新过一篇保姆级教程。 既然如此,那我们就接着去年的系列继续写下去。这个系列在我们免费开源的知识库里也有,会一直更新下去。 这一次我们来聊一聊大家反复问我的公式问题,为了这篇关于公式的内容,我整整花了一周的时间梳理和打磨,码字码了一万多,内容超级干 希望能把这个多维表格里最让人生畏,但其实最性感的地方让你一看就能明白咋用。这一篇内容有点长,建议先收藏,遇到问题的时候再回过头看看。 今天咱们不讲枯燥的函数定义,只聊它是怎么帮你偷懒的。 公式的本质,其实就是把你脑子里的业务逻辑,翻译给电脑听。 以前在 Excel 里,我们习惯了在一个单元格里写公式,但多维表格不一样。你不能在单个单元格里写公式,你是在给整列数据立规矩。 操作其实很简单:打开数据表,点击表头最右侧的 + 号,选择 公式 作为字段类型。一旦你在这个字段里写好了规则,它就会自动作用于这一列的所有记录。 如果你只是想做个简单的加减乘除,比如算个总价,甚至都不用写代码。进入编辑界面后,右下角有个 进入简简模式 点一下,选好字段和运算符,像按计算器一样点几下就搞定了。 最简单的例子,你需要把部门和员工编号拼在一起,变成一个唯一的工号。在 Excel 里你可能要用鼠标拖来拖去,但在多维表格里,你只需要告诉AI,我要 部门 加上 编号。 这里有个小技巧,也是我最常用的。别去记那些复杂的 CONCATENATE 函数,直接用一个连接符 & 就能搞定。写出来就是 [部门] & [编号],简单粗暴。如果中间想加个横杠,就写成 [部门] & & [编号]。 这里插个很多朋友问我的小技巧,怎么在公式里加 Emoji 表情? 毕竟我们做看板是要好看的。其实这就是个输入法技巧。在写公式的时候,Windows 用户按 Win + .(句号),Mac 用户右键点击选择表情符号,就能直接把 ✅ 或者 ⚠️ 这种图标放进公式里,配合后面要讲的 IF 判断,视觉效果炸裂。 处理完文本,咱们聊聊时间。 做业务的朋友都知道,截止日期是悬在头顶的达摩克利斯之剑。合同还有几天到期?员工生日还有几天?项目延期了多久? 这时候,DATEDIF 就是你的救命稻草。你只需要告诉它 起始日期、结束日期、以及你想算的单位。比如想算工龄,单位就填 "Y";想算项目逾期天数,单位就填 "D"。甚至你还可以用 "YD" 这种神奇的参数,用来忽略年份只计算天数,比如用来计算还有几天过生日就特别好用。 当然,如果你只是想简单地提取日期里的年月日,用 YEAR()、MONTH()、DAY() 就能把具体的数字拿出来。甚至如果你想知道今天是星期几,用 WEEKDAY() 函数就能返回一个数字,配合 IF 就能自动标记周末了。 我之前遇到过一个特别头疼的场景:算项目工期。直接用结束日期减去开始日期,算出来的是自然日,连周六周日都算进去了。但老板要看的是工作日啊! 后来我发现了 NETWORKDAYS 这个函数,它能自动剔除周末,甚至你还可以把自己定义的节假日表放进去,一键算出净工作日。那一刻,我真的有种被救赎的感觉。 这个函数的完整形态是:NETWORKDAYS(起始日期, 结束日期, [节假日])。 前两个参数很好理解,就是开始和结束的时间。最厉害的是第三个选填参数——[节假日]。默认情况下,这个函数会自动把周六周日给剔除掉,但它不知道哪天是春节,哪天是国庆。这时候,我们就需要用到 双表法。 第一步:建立节假日库。 你可以新建一个独立的数据表,比如 2026年节假日。在这个表里,把全年的法定节假日,比如春节、劳动节、国庆节都录进去。当然也有更简单的方法,就需要用到Agent的能力,之后写一篇文章,注意,这里只录入你需要额外扣除的日期。 第二步:建立项目表。 在你的主表,比如就叫“净工作日计算”表,记录好每个任务的“开始日期”和“结束日期”。 第三步:引用计算。 在主表里新建公式字段,输入: NETWORKDAYS([开始日期], [结束日期], [2026 年节假日].[法定假期日期]) 系统会自动计算两个日期之间的天数,先扣掉所有的周六周日,然后再去你引用的那个“节假日表”里,把撞车的日期也扣掉。这样算出来的,才是真正的、老板想看的“实际工作投入天数”。反过来也是一样,如果你想知道“10个工作日之后是哪一天”,用 WORKDAY() 函数就能直接算出来,再也不用对着日历数手指头了。 业务里最复杂的,往往不是计算,而是判断。 这就要请出逻辑之王:IF 和它的进阶版 IFS,一会儿会重点说一下IFS。 它们的本质就是比较“实际值”和“期待值”,然后告诉你结果。逻辑就像我们说话一样:如果是这样(True),就给这个结果;否则(False),就给那个结果。 但在写判断的时候,大家最常卡壳的是:怎么表达“空”这个概念? 比如如果 交付时间 是空的,就显示“未完成”。 在公式里,空值最土的写法是 "",就是两个双引号中间啥也没有。但在处理数据收集、信息补全这种场景时,我们其实有两位更专业的“质检员”:ISBLANK 和 IFBLANK。 首先是 ISBLANK,它是“判断者”。 它的作用很简单,就是盯着一个单元格看:如果是空的,它就喊“True”;如果里面有东西,它就说“False”。 这在订单管理里特别好用。比如你想快速揪出那些未填写生产批次的记录,或者查找未填写的空单元格。 配合 IF 函数,它能做出很漂亮的视觉标记: 公式:IF(ISBLANK([交付日期]), "❌", "✅") 这句话的意思是:如果交付日期是空的,就打个叉,否则打个勾。这样你的表格里哪些没做完,一眼就看出来了。 然后是 IFBLANK,它是“补救者”。 它的逻辑比 ISBLANK 更进一步,用大白话来说如果这个坑是空的,我该填点什么进去? 公式结构是:IFBLANK(待检查的值, 为空时的替补值)。 如果单元格不为空,它就原样显示原来的内容;如果为空,它就填上你指定的东西。 举个实用的例子:如果有员工没填交付日期,你想默认把它设为今天。 公式:IFBLANK([交付日期], NOW()) 这一招在数据清洗时简直是神技,它相当于给了数据一个兜底的默认值。其实,这个公式的效果等同于更基础、通用的写法,通过简单的 IF 嵌套 ISBLANK进行逻辑分支处理,确保了“[交付日期]”字段不漏空。也就是:IF(ISBLANK([交付日期]), NOW(), [交付日期]),但你看,直接用 IFBLANK 写起来是不是优雅简洁多了? 搞定了空值,我们再看更复杂的条件判断。 如果情况不止两种怎么办?比如给销售算提成,或者给学生评等级,这可不是非黑即白的。如果你用 IF 一层层去套,写完你自己都晕了,括号能把你绕死。 这时候,一定要用 IFS。 它允许你列出一连串的条件 结果对。你只需要按顺序把规矩立好,系统就会从左到右依次判断,满足哪个就停在哪里。 比如复杂的阶梯提成计算。 假设销售人员的销售额大于等于 800,提成 20%;大于等于 500,提成 10%;否则没提成。 用 IFS 写出来非常清爽:IFS([销售额] =800,[销售额] 0.2,[销售额] =500,[销售额] 0.1,TRUE(),0)。 比如更复杂的等级评定。 比如给成绩评级:100分是满分,85以上优秀,75以上良好,60以上及格,剩下的都是不及格。 公式:IFS([成绩] =85,"优秀",[成绩] =75,"良好",[成绩] =60,"及格",TRUE(),"不及格") 注意到了吗?最后那个 TRUE, "不及格" 是什么意思? 这是一个高阶小技巧。IFS 函数如果前面的条件都不满足,它会报错错。为了避免这个尴尬,我们在最后加一个永远为真(TRUE)的条件,作为兜底选项。意思就是,如果前面都不算数,那就统统按这个处理。 除了逻辑判断,还有一个场景让强迫症非常抓狂,那就是 报错。 你肯定见过那种Excel表格,因为某个数据还没填,或者分母是0,导致公式列显示一堆丑陋的 DIV/0! 。这不仅难看,还会影响后续的汇总计算。 这时候,你需要两位“清道夫”:ISERROR 和 IFERROR。 ISERROR 是“诊断器”。 它用来判断一个公式的结果是不是错误的。如果是错的,返回 True;没错,返回 False。 比如你想根据总价和数量计算单价,通过 ISERROR([总价]/[数量]),你可以监控哪些数据的运算出了问题。 IFERROR 才是真正的“遮瑕膏”。 它的逻辑是:先试着算一下,如果算错了,就给我显示自定义的内容。 公式:IFERROR(待验证值, 错误情况的返回值) 场景:处理除以零的尴尬。 假设你要计算单价(总价/数量),但有些商品的数量还没填(也就是0)。直接除的话,表格会报错。 这时候用 IFERROR 包裹一下:IFERROR([总价]/[数量], "数据有误") 这样,一旦计算出错,单元格里就会优雅地显示“数据有误”,而不是报错。这在制作给老板看的报表时,绝对是加分项。 说到这里,必须提一个多维表格里的核武器。 很多朋友从 Excel 转过来,最不习惯的就是不能随便引用上一行的数据。但在多维表格里,我们有 FILTER 和 CurrentValue。 要理解这个核武器,我们得先搞清楚一个核心概念:在多维表格里,到底怎么“抓”数据? 其实就两种抓法,决定了你是只能看眼前,还是能掌控全局。 第一种是抓当前行。比如你在A组的销售表里,想知道这个月“电脑、空调、冰箱”这三样产品里哪个卖得最好。这其实是在同一行记录里做比较。你只需要直接引用 [电脑销量]、[空调销量] 这样字段,用 MAX 函数一包,它就会返回这三个数里最大的那个。这就好比你在看每个人的成绩单,只盯着他自己的各科成绩看。 第二种是抓整列数据。这才是多维表格真正强大的地方。当你引用格式变成 [数据表].[字段] 时,你抓到的不再是一个数,而是整整一列数的集合。 举个真实的业务场景:你想算出这一年里电脑销量的最高纪录是多少,然后算算这个月的销量和那个“历史最高峰”差了多少。这时候,公式前半部分就要写成 MAX([A 组销售数据].[电脑销量]) , 注意这里引用的是整个表的电脑销量字段,它能把历史最高值揪出来;后半部分减去 [电脑销量] ,这里引用的是当前行的销量。两者一减,差距就出来了。 这种“抓全局”的能力,甚至可以跨表。比如你在 A 组的表里,想看看自己和隔壁 B 组的差距。你完全可以直接在公式里引用 MAX([B 组销售数据].[电脑销量]),数据就这样被打通了。 这也就解释了大家问的最多的百分比怎么算。比如算这个月的电脑销量占全年的比例,逻辑是一样的:用当前的 [电脑销量] 除以全表销量的总和 SUM([A 组销售数据].[电脑销量])。这里有个小细节,算出来如果是 0.05 这种小数,别慌,双击公式字段,在格式里把它调整成百分比,它就顺眼了。 明白了这种“集合引用”的逻辑,你再看 FILTER,就会豁然开朗。它就像是一个高精度的过滤系统,专门用来在海量数据里“淘金”。 FILTER 函数的基本逻辑是:[数据范围].FILTER(筛选条件)。你给它一个池子,给它一个网,它就给你捞出你想要的鱼。 比如,你想在“销售总表”里,只看“销售001”这个人的业绩。公式就是: [销售总表].FILTER(CurrentValue.[销售人员]="销售 001").[销售额] 这里 CurrentValue 就是我们在表里逐行检查的“当前值”。 但实战中,业务逻辑往往更刁钻。 场景一:我想看除了某样东西之外的所有数据。 比如,你想统计所有不属于冰箱的商品销售额。在公式里,“不等于”是用 != 来表示的。 公式写成:[销售总表].FILTER(CurrentValue.[商品名称]!="冰箱").[销售额] 场景二:我想筛选一个区间。 比如,你想找销售额在 100 到 500 之间 的那些单子,看看是谁卖的。这需要同时满足“大于100”和“小于500”两个条件。 你可以用 AND() 函数,也可以用更简单的 && 符号。 公式就是:[销售总表].FILTER(CurrentValue.[销售额] 100 && CurrentValue.[销售额]<500).[销售人员] 场景三:我有多个跨字段的条件。 比如,你要找“销售001”卖出的“电视”。这同样是“且”的关系,用 AND 连接。 公式:[销售总表].FILTER(AND(CurrentValue.[销售人员]="销售 001", CurrentValue.[商品名称]="电视")).[销售额] 场景四:我的条件比较宽松,满足一个就行。 比如,你想找销售额“大于500”的大单,或者卖的是“电视”的所有单子。这时候就要用 OR() 函数。 公式:[销售总表].FILTER(OR(CurrentValue.[销售额] 500, CurrentValue.[商品名称]="电视")).[销售人员] 一旦你掌握了 FILTER 配合 SUM 或者 COUNT,你会发现,你不再是在填表,你是在构建一个自动化的数据系统。数据会自动从一张表流向另一张表,自动汇总,自动计算。甚至你还能用 UNIQUE 函数给数据去重,或者用 SORT 函数给提取出来的数据自动排个序。 但很多时候,我们不需要求和,只是想知道有多少个。 这时候,COUNTIF 函数就该上场了。它简直是数据分析和销售管理的利器,专门用来统计满足特定条件的记录个数。 用法其实和 Excel 很像,但更灵活。比如你想统计学生名单里,分数超过80分的同学有几个。公式直接写: [学生数据表].COUNTIF(CurrentValue.[分数] 80) 它就会自动筛选并返回人数。 如果是更复杂的场景,比如多条件统计:你要统计库存表里,“销售额大于1000” 且 “实际库存不足500” 的商品。这时候就要配合 AND 函数: [库存总表].COUNTIF(AND(CurrentValue.[销售额] 1000, CurrentValue.[实际库存]<500)) 这里还有一个超实用的“查重”技巧。 销售部经常要盘点,最怕货品重复录入。怎么自动标记重复项?我们可以利用 COUNTIF 统计“当前这个货品名称”在“整个销售表”里出现了几次。 公式可以是这样: IF([商品销售表].COUNTIF(CurrentValue.[货品名称]=[货品名称]) 1, "重复", "") 逻辑翻译过来就是:如果这个货品名字在表里出现次数大于1,就标记“重复”,否则留空。这个技巧在数据清洗时简直是神技。 如果你不仅想知道“有多少”,还想知道“总共有多少钱”呢? 这时候,SUMIF 函数就该登场了。 它的逻辑和 COUNTIF 非常像,但是它多了一步:把符合条件的东西加起来。 公式的基本结构是:SUMIF(数据范围, 筛选条件)。 场景一:统计销售报表中的“大单”总额。 比如你想统计所有销售额高于 4500 元的商品,它们加起来一共卖了多少钱。 公式写成:SUMIF([数据表].[销售额], CurrentValue 4500) 注意,这里引用的是 [数据表].[销售额],这意味着我们是在对整张表的销售额列进行扫描。系统会先把那些大于 4500 的单子挑出来,比如商品B卖了5000,商品E卖了8000,然后把它们加在一起,返回一个总数13000。 场景二:简单的单行求和,其实是假 SUMIF。 有时你会在单行里用 SUMIF,比如 SUMIF([销售额], CurrentValue 4500)。如果 [销售额] 只是当前行的一个数字,那它的逻辑就是:如果这个数字大于 4500,就返回它自己;否则返回 0。这在处理一些不需要跨表汇总的简单逻辑时也能用到。 但是,Excel 老手可能会问:如果我有多个条件怎么办?Excel 里有 SUMIFS,这里呢? 多维表格里没有 SUMIFS,因为我们有更强大的组合拳:FILTER + SUM。 这个逻辑虽然写起来稍微长一点,但它能处理任何复杂的业务场景,是真正的“核武器”。 场景三:计算“周北北”卖“食材”的总销售额。 这是一个典型的多条件求和。逻辑是:先去【销售总表】里筛选,找到销售员是“周北北” 且 商品类型是“食材”的记录,然后把它们的销售额加起来。 公式:[销售总表].FILTER(CurrentValue.[销售人员]="周北北” && CurrentValue.[商品类型]="食材").[销售额].SUM() 看,这就是用 FILTER 替代 SUMIFS 的思路。 场景四:计算所有“不为空”的销售员业绩。 有时候数据不规范,有些单子没填销售员。你想统计那些有人认领的单子总额。 公式:[销售总表].FILTER(CurrentValue.[销售人员]!="").[销售额].SUM() 场景五:计算特定月份的业绩。 这需要配合日期函数。逻辑是筛选出销售时间在 11 月 1 日到 11 月 30 日之间的记录,然后求和。 但是,如果我们不想求和也不想计数,只是想把过滤出来的信息“连起来”展示,该怎么办? 这就涉及到了另一个极其高频的场景:信息聚合。 试想一下,你有一个“客户关系管理”表,记录了所有客户的跟进情况。现在,你想在“销售成员表”里,把每个销售员负责的所有客户名字,全部列在一个单元格里,一眼看清他的“地盘”。 这时候,光用 FILTER 把数据捞出来是不够的,你还需要一把“胶水枪”把这些散落的名字粘起来。这把枪就是 ARRAYJOIN 函数。 它的用法非常简单,ARRAYJOIN其实就是你要粘的一堆东西, 用什么符号隔开。 比如刚才那个销售员找客户的例子,公式就可以写成:ARRAYJOIN([客户关系管理].FILTER(CurrentValue.[销售员]=[姓名]).[客户名称], CHAR(10))。 这里有个高级的小技巧,公式里的 CHAR(10) 代表的是换行符。这样一来,所有的客户名字就不会挤成一团,而是整整齐齐地每行显示一个,清晰度满分。 这个函数不光能处理跨表数据,处理当表数据也是一把好手。 比如你有个多选字段叫“擅长领域”,里面选了“AI、设计、编程”。你想把这些标签按照自己希望的方式(比如用 & 符号)拼接起来展示,直接用 ARRAYJOIN([擅长领域], " & ") 就能搞定。 或者,在产品走查表里,你想把“设备系统”、“问题类型”、“修复优先级”这几个分散的字段,合并成一条完整的描述。这时候你需要先用 LIST 函数把它们打包成一个列表,然后再用 ARRAYJOIN 粘起来。公式写出来就是:ARRAYJOIN(LIST([设备],[设备系统],[问题类型],[优先级]), " ")。这样,原本分散在四列的信息,瞬间变成了一条结构化的摘要,方便快速集中查看。 等一下,刚才提到了 LIST,这个函数可不仅仅是 ARRAYJOIN 的配角。 LIST 函数其实是一个非常强大的“购物袋”。它能把原本分散 in 不同列的数据,临时打包成一个整体,数组或者列表对象,方便我们进行批量处理。 最基础的用法,就像刚才提到的,把“产品情况”、“销售状态”、“销售周期”这三列打包:LIST([产品情况], [销售状态], [销售周期])。 但这里有一个巨大的坑,90%的人都会踩: 如果你的 LIST 里包含日期字段,直接放进去,它会变成一串冷冰冰的序列号(比如 44567)。所以,记得一定要给日期穿上“防护服”,用 TEXT() 函数转换一下格式。 正确写法:LIST([产品名称], TEXT([销售开始日期], "YYYY/MM/DD"), [产品类别])。 LIST 真正的高光时刻,是在处理复杂质检逻辑的时候。 想象一下,你是设备质检员,检查一台起重机。你需要判断“外观是否完好”、“控制器是否灵敏”、“紧急按钮是否可靠”。只有这三项全都是“是”,设备才算“合格”。 在 Excel 里,你可能要写一长串 AND(A="是", B="是", C="是")。但在多维表格里,我们可以玩点高级的: 第一步,把这三个字段打包:LIST([外观], [控制器], [按钮])。 第二步,直接统计这个包里有几个“是”。 公式:IFS([设备状态汇总].COUNTIF(CurrentValue="是")=3, "合格", [设备状态汇总].COUNTIF(CurrentValue="")=3, "未质检", TRUE, "不合格") 看,逻辑是不是瞬间清晰了? 还有一个场景是查漏补缺。比如做样本检查,必须要有“质量报告”和“评级报告”。 我们可以用 LIST 把这两份报告的状态打包,然后用 CONTAIN 函数检查里面有没有“N”(代表缺失)。 公式:IF(CONTAIN(LIST([质量报告], [评级报告]), "N"), "❌", "✅") 只要发现一个“N”,就打叉,严谨又高效。 既然提到了用 ARRAYJOIN 把信息“粘”起来,那如果我需要把信息“拆”开呢? 这就要请出手术刀般的 FIND 函数了。 它最核心