分享

Excel循环函数之按块循环 - Excel函数式编程

 ExcelEasy 2024-07-05 发布于北京


今天的主题是Excel中的循环函数。

今天我们说一说按块循环。

从循环函数本身来说,MAPSCAN/REDUCE函数是按数组元素循环,MAKEARRAY函数是按索引循环,    BYROW按行循环,BYCOL按列循环。

但是没有按块循环。

什么是按块循环?

比如,我们需要按照下图中标注的方式对表格进行统计,

从数据看,就是统计每一类产品上半年和下半年的数据。

从逻辑上看,我们需要对原表格按照图中所示分块循环。

思路

首先,我们需要用一个公式将这些块取出来。

显然,这可以通过OFFSET函数完成。比如,下面的公式:

=OFFSET(C2,0,0,2,6)

可以取出图中的第一块

第4块的公式是,

=OFFSET(C2,2,6,2,6)

然后,我们需要设计一个数组公式,可以返回一个“块”数组。

这就需要在OFFSET函数的的第二、三参数中使用数组。

第二参数代表行号,需要使用列数组:{0; 2; 4},代表分别需要从C2单元格偏移0行,2行和4行。

第三参数代表列号,需要使用行数组:{0, 6},代表分别需要从C2单元格偏移0列,6列。

于是就得到了公式:

=OFFSET(C2,{0;2;4}, {0,6},1,12)
实现

在Excel中使用这个公式,

可以看到结果错误。

但是从形式上看,我们得到了3行2列的数据,对应于我们需要的分块。

之所以结果出错,是因为这里我们得到的是数组的嵌套,Excel在单元格区域中不支持。

但是,这个嵌套的数组是真实存在的。

我们可以对之循环,

=MAP(OFFSET(C2,{0;2;4}, {0,6},2,6),SUM)

这个公式对这个三行两列的“块”数组循环,每块使用SUM函数求和,可以得到正确的结果。

详情咨询客服(底部菜单-知识库-客服)

Excel+Power Query+Power Pivot+Power BI


Power Excel 知识库    按照以下方式进入知识库学习
Excel函数   底部菜单:知识库->Excel函数

自定义函数  底部菜单:知识库->自定义函数

Excel如何做  底部菜单:知识库->Excel如何做

面授培训  底部菜单:培训学习->面授培训

Excel企业应用  底部菜单:企业应用

也可以在历史文章中学习Excel,Power Query,Power Pivot,Power BI,Power Automate各种技巧。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章