Excel情报局
用案例讲Excel
当我们面对Excel中一堆像“1-5”、“2-6”、“3-7”这样的文本型数字区间时,想要快速的找到它们的公共交集部分时,比如在C2单元格想要统计A列各区间的交集值,是否会感到无从下手?手动比对不仅效率低下,而且容易出错。
其实这个统计交集问题与我们初中与高中数学上的基本知识点相似,我们在Excel中解决类似的问题时,可以借鉴数学常识找到规律,进行公式的编写。
交集是由所有同时属于各个区间的元素组成的集合。对于若干个区间,逐一找出它们的公共部分即可。例如:区间[1,5],区间[2,6]、区间[3,7],它们的交集是[3,5],因为这是三个区间都包含的部分。我们可以将所有区间在数轴上表示出来,观察区间重叠的部分。重叠区域即为交集。如下图所示:
接下来小编将总结一个“一步到位”的公式,它能瞬间解析多个文本区间,并自动计算出所有区间共有的数值,将结果整齐的列在单个单元格中。
这个公式的核心基于一个简洁而强大的逻辑:
多个区间的交集,起始于所有起点中的最大值,终止于所有终点中的最小值。下面小编将深入拆解这个公式,看看它是如何将文本拆解、数值转换、极值计算与序列生成完美组合的。
第一阶段
使用TEXTBEFORE函数:
{1;2;3}MAX函数计算这个左端点数组中的最大值:
=MAX(TEXTBEFORE(A2:A4,”-“)*1)
MAX({1;2;3})的最大值结果是3。获取到了区间的左端点中的最大值3。
使用TEXTAFTER函数:
{5;6;7}
MIN函数计算这个右端点数组中的最小值:
MIN({5;6;7})的最小值结果是5。获取到了区间的右端点中的最小值5。
使用到的是SEQUENCE函数:
使用ARRAYTOTEXT函数:
此时我们虽然得到了最终的统计结果,但是借助了C列与D列的辅助列,所以我们需要合并公式,去掉辅助列,整理成一个公式。将C2的公式与D2的公式同时代入到SEQUENCE函数的参数中:
代入后:
=ARRAYTOTEXT(SEQUENCE(MIN(TEXTAFTER(A2:A4,”-“)*1)-MAX(TEXTBEFORE(A2:A4,”-“)*1)+1,,MAX(TEXTBEFORE(A2:A4,”-“)*1)))
虽然这个总公式已经完成了最终效果。但是公式的可读性不佳,初次观察该公式时不容易理解其逻辑。
我们可以借助LET函数设置变量,增加公式的可读性。
设置变量名称a、b、c以及其所代表的变量内容:
最终总公式: