Excel 函数解读,涉及row,offset函数

2025-04-13 21:32:38
推荐回答(2个)
回答(1):

  ROW函数,返回一个引用的行号。如果省略 reference,则假定是对函数 ROW 单元格的引用。在Excel中,OFFSET函数的功能为以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以为一个单元格或单元格区域。并可以指定返回的行数或列数。

ROW函数:
  ROW函数,返回一个引用的行号。如果省略 reference,则假定是对函数 ROW 单元格的引用。
  ROW(reference)
  Reference 为需要得到其行号的单元格或单元格区域。
  如果省略 reference,则假定是对函数 ROW 所在单元格的引用。
  如果 reference 为一个单元格区域,并且函数 ROW 作为垂直数组输入,则函数 ROW 将 reference 的行号以垂直数组的形式返回。
  Reference 不能引用多个区域。
Offset函数:
  在Excel中,OFFSET函数的功能为以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以为一个单元格或单元格区域。并可以指定返回的行数或列数。
  OFFSET(reference,rows,cols,height,width)
  Reference 作为偏移量参照系的引用区域。Reference 必须为对单元格或相连单元格区域的引用;否则,函数 OFFSET 返回错误值#VALUE!。
  Rows相对于偏移量参照系的左上角单元格,上(下)偏移的行数。如果使用 5 作为参数 Rows,则说明目标引用区域的左上角单元格比 reference 低 5 行。行数可为正数(代表在起始引用的下方)或负数(代表在起始引用的上方)。
  Cols 相对于偏移量参照系的左上角单元格,左(右)偏移的列数。如果使用 5 作为参数 Cols,则说明目标引用区域的左上角的单元格比 reference 靠右 5 列。列数可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边)。
  Height高度,即所要返回的引用区域的行数。Height 必须为正数。
  Width宽度,即所要返回的引用区域的列数。Width 必须为正数。
  offset 在汇编中可以获得操作数的偏移地址。用法:
  例如:平时invoke MessageBox,NULL,addr sztext,addr szcaption,MB_OK
  当然前面已经定义过sztext和szcaption为字符串了
  szcaption db '小例子',0
  sztext db 'powerful!',0
  此时 invoke MessageBox,NULL,addr sztext,addr szcaption,MB_OK可以写为
  push MB_OK
  push offset szcaption
  push offset sztext
  push NULL
  call MessageBox
  这样看起来就更接近汇编语言习惯了,当然用invoke更简单点,这里只是为了说明 offset用法。

回答(2):

数组公式
{
=MAX(
(
ROW($A$11:OFFSET($A$11,791,0))
- ROW(CA$10)
)
*($A$11:OFFSET($A$11,791,0)<0))
}
可以这样理解:

1、OFFSET($A$11,791,0)为$A$11下移791行,即$A$802。
所以上述公式可以简化为:
{
=MAX(
(ROW($A$11: $A$802)-ROW(CA$10)) ..... 2
*($A$11: $A$802)<0)) .................... 3
}

2、ROW($A$11: $A$802) = {11,12,13,…. 801,802} 共791个序列数字
ROW($A$11: $A$802)-ROW(CA$10)= ROW($A$11: $A$802)-10 = {1,2,3,…790, 791} 即1到791自然序列。

3、($A$11: $A$802)<0)是判断函数,为{true, false, true,….true, false}等共791个逻辑值数组
逻辑值数组在乘法运算中会变为{1, 0, 1,….,1,0}等1和0的布朗值数组,其中true=1, false=0。

4、2×3即 {1,2,3,… ,790,791} × {1,0,1,…,1,0},2个数组共791个对应值相乘,得出一个791列的数组:{1,0,3,…,790,0}

5、max(2×3) =max({1,0,3,…,790,0})=790,是求数组最大值

综合起来,上述函数就是求$A$11: $A$802的列区域中<0的单元格在这个区域中从A11开始算的行次数。

注:上述数组公式如果用“公式求值”功能,一步步查看公式计算的过程和结果,再对照实际的场景,更容易理解。

完毕。