小米科技|从 Excel 单元格的一大堆文字和数字中,计算出最大值,我方了

小米科技|从 Excel 单元格的一大堆文字和数字中,计算出最大值,我方了

文章图片

小米科技|从 Excel 单元格的一大堆文字和数字中,计算出最大值,我方了

文章图片


事情就是这么个事情 , 居家隔离 , 坚持打胜抗疫这场硬仗 。

公司员工或多或少都隔离并居家办公过 , 每个月会有一个当月员工隔离数统计表 , 需要计算出最长的隔离天数 。
这有何难?但是看到源数据 , 我方了 。
案例:
下图 1 的 A 列是当月每个员工隔离的总天数 , 请计算出隔离时间最长的天数 。
效果如下图 2 所示 。


解决方案:1. 在 C2 单元格中输入以下公式 --> 按 Ctrl+Enter:

【小米科技|从 Excel 单元格的一大堆文字和数字中,计算出最大值,我方了】=MAX((SUBSTITUTE(A2ROW(1:31)\"\")<>A2)*ROW(1:31))
这个公式 , 如果对 substitute 函数不熟 , 或者对数值没有一个特别强的领悟力的话 , 可能是有点难 。 所以我会仔细讲解一下 。

公式释义:

  • substitute 函数的作用是在某一文本字符串中替换指定的文本;本案例中的数字跟文本混合在一起 , 已经是个文本格式的数字了;
  • 语法为 SUBSTITUTE(要替换其中字符的文本 需要替换的旧文本 用于替换的新文本 [要替换第几个旧文本
    );

  • SUBSTITUTE(A2ROW(1:31)\"\"):
    • 将 A2 单元格中的字符 1 到 31 全部替换为空值;
    • 为什么是 1 到 31 呢?因为每个月最多 31 天 , 所以当月隔离天数不可能有比 31 更大的了 。
  • ...<>A2:判断替换后的结果与 A2 是否不同 , 只要包含数字 1 至 31 就会不同 , 结果为 true;最后会生成由 31 个 true 或 false 组成的数组;
  • *ROW(1:31):将上述数组与数组 1 至 31 相乘 , true 的保留数值本身 , false 的为 0 , 这样就相当于吧 A2 中的数字全提取出来了;
  • 最后用 max 对这组数值求最大值