今天的主题是Excel中的循环函数。 今天我们说一说按块循环。 从循环函数本身来说,MAP,SCAN/REDUCE函数是按数组元素循环,MAKEARRAY函数是按索引循环, BYROW按行循环,BYCOL按列循环。 但是没有按块循环。 比如,我们需要按照下图中标注的方式对表格进行统计, 从数据看,就是统计每一类产品上半年和下半年的数据。 从逻辑上看,我们需要对原表格按照图中所示分块循环。 首先,我们需要用一个公式将这些块取出来。 显然,这可以通过OFFSET函数完成。比如,下面的公式:
可以取出图中的第一块 第4块的公式是,
然后,我们需要设计一个数组公式,可以返回一个“块”数组。 这就需要在OFFSET函数的的第二、三参数中使用数组。 第二参数代表行号,需要使用列数组:{0; 2; 4},代表分别需要从C2单元格偏移0行,2行和4行。 第三参数代表列号,需要使用行数组:{0, 6},代表分别需要从C2单元格偏移0列,6列。 于是就得到了公式:
在Excel中使用这个公式, 可以看到结果错误。 但是从形式上看,我们得到了3行2列的数据,对应于我们需要的分块。 之所以结果出错,是因为这里我们得到的是数组的嵌套,Excel在单元格区域中不支持。 但是,这个嵌套的数组是真实存在的。 我们可以对之循环,
这个公式对这个三行两列的“块”数组循环,每块使用SUM函数求和,可以得到正确的结果。 详情咨询客服(底部菜单-知识库-客服) Excel+Power Query+Power Pivot+Power BI 自定义函数 底部菜单:知识库->自定义函数 面授培训 底部菜单:培训学习->面授培训 Excel企业应用 底部菜单:企业应用 |
|