查看: 3244|回复: 10
收起左侧

[软件] 帮忙详解下exel OFFSET 公式

[复制链接]
兔八哥_007
发表于 2016-12-29 19:58:12 | 显示全部楼层 |阅读模式
本帖最后由 兔八哥_007 于 2016-12-30 00:20 编辑

要的结果是:B1=A1+A2+A3,B2=A4+A5+A6



网上查到的结果是 =SUM(OFFSET(A$1,ROW(A1)*3-3,,3)) 实测是正确的,但不明白这些,比如为什么要A$1不是A1,ROW(A1)*3-3这个*3又-3是为什么?就是详细讲解下。谢谢~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
xzykgc4mc3
发表于 2016-12-29 21:23:43 | 显示全部楼层
本帖最后由 xzykgc4mc3 于 2016-12-29 21:32 编辑

excel中$是什么意思_百度知道
https://zhidao.baidu.com/question/239646263.html
Excel中ROW函数的使用_百度经验
http://jingyan.baidu.com/article/c146541356aef90bfcfc4cbd.html
ccboxes
发表于 2016-12-29 21:41:18 | 显示全部楼层
本帖最后由 ccboxes 于 2016-12-29 21:43 编辑

微软对于相对引用绝对引用的说明https://support.office.com/zh-cn ... 6-839E-5F0D8D0BACA9

$的意思就是说在你把格子里的公式复制到其他格子里时,不允许Excel自动改变$后面的行标或列标
比如你把=A1+A2从A3格复制到B3格公式就会自动变为=B1+B2,但=$B1+$B2复制过去就会保持原状
      把=A1+B1从C1格复制到C2格公式就会自动变为=A2+B2,但=A$1+B$1复制过去就会保持原状


微软对Offset函数的说明https://support.office.com/zh-cn ... b-a14e-b4d906d11b66

这个有点杀鸡焉用牛刀的意思,对于你这种格数少形状简单的直接输=A1+A2+A3就行了。

Office帮助里说的相当详细,没事可以翻翻。
兔八哥_007
 楼主| 发表于 2016-12-29 23:47:39 | 显示全部楼层
本帖最后由 兔八哥_007 于 2016-12-29 23:51 编辑


我知道相对引用和绝对引用,我不是对函数格式的疑问,我是对这个实例的思路和逻辑关系上的疑问,比如为什么要用绝对引用,用相对引用会有什么问题,用$A$1是不是和用A$1的效果一样?还有那个*3-3的计算是个什么规则?有没有什么数学或统计学上的相关内容,我要的是像这样的问题,不知我说明白了

为什么不直接输入A1+A2+A3,是因为有大量这样的连续规则的数据,要是就两个,自然没有必要这么复杂。截图只是例子!
兔八哥_007
 楼主| 发表于 2016-12-29 23:56:54 | 显示全部楼层
本帖最后由 兔八哥_007 于 2016-12-30 00:14 编辑

谢谢大家的解答,但请大家不要只发链接,谢谢。我没有大家知道的多,但我也是学计算机的,虽然只是职专,不如大家专业,但像什么绝对引用,相对引用,都是知道的,还有对某个函数说的说明,我是可以查到的,也能基本看明白。谢谢大家,我需要的是个可以举一反三的说明,需要的是个解题思路,和这里面有关数学和统计学或其他方面的知识。谢谢大家。

比如那个函数,我用 =SUM(OFFSET(A$1,ROW(A1)*3-3,0,3))  和 =SUM(OFFSET(A$1,ROW(A1)*3-3,0,3,)) 都可以。但用 =SUM(OFFSET(A$1,ROW(A1)*3-3,0,3,0)) 不行,

A$1,ROW(A1)*3-3  这段的数学逻辑什么的。

表达不当之处请大家见谅!
  
兔八哥_007
 楼主| 发表于 2016-12-29 23:57:30 | 显示全部楼层
xzykgc4mc3 发表于 2016-12-29 21:23
excel中$是什么意思_百度知道
https://zhidao.baidu.com/question/239646263.html
Excel中ROW函数的使用_ ...

这些我都明白,谢谢
随便注册
发表于 2016-12-30 02:02:14 | 显示全部楼层
这种问题高手答不了,基础问题他会无意识忽略,必须得我这样现学的才能理解你。等以后你再回来翻这帖,你也会不理解为什么当时不理解。
再加上这个http://jingyan.baidu.com/article/11c17a2c71716cf446e39dfb.html

$A$1和A$1,后者A会变,但你不要复制粘贴数据,要在单元格上右键,把单元格复制粘贴,就看出来了。

OFFSET(A$1,ROW(A1)*3-3,0,3,1)
以A$1为出发点,下移3(N-1)行,右移0列,从此处开始向下括出3行,1列的区域

因为是3个一组,那么要找第8组第一个时怎么找,先找到第七组最后一个,往后数。
第七组最后一个就是3×7=3×(8-1)=3×8-3,换成3(N-1)就好理解了。

最后一个参数,首先帮助里说了必须是正数,写0就不对。至少得数1个才能开始计算啊,括0列等于没数据。省略我猜相当于1。
ccboxes
发表于 2016-12-30 11:57:34 | 显示全部楼层
本帖最后由 ccboxes 于 2016-12-30 11:59 编辑
兔八哥_007 发表于 2016-12-29 23:56
谢谢大家的解答,但请大家不要只发链接,谢谢。我没有大家知道的多,但我也是学计算机的,虽然只是职专,不 ...


你还是没看仔细,也没看懂Offset,对行宽和行高的设定只能使用正数,0当然不行。细节不懂和完全不懂是一样的,一定要仔细看,仔细练。
如果你是说这个函数是怎么实现的我数据结构学的不好没法说的太好。


但具体到这个ROW(A1)*3-3上这就是一个简单的嵌套,但这家伙偷懒没有严格按标准格式写,一看就是老油子,这是个非常差劲的习惯,千万不要学。函数应为=SUM(OFFSET(A$1,ROW(A1)*3-3,0,1,3))

首先看他的位置是在Offset函数的ROW位置上,这个位置的作用你应该清楚就是“需要左上角单元格引用的向上或向下行数。”,但是为了实现复制到其他单元格时自动适应,他没有使用具体的数字,而是放了一个算式:ROW(A1)*3-3。这个算式中ROW()的作用是引用括号内地址的行数。
接下来看这个算式在B1格时,ROW(A1)的结果就是1,算式结果就是0,函数为=SUM(OFFSET(A$1,0,,3))。你可以看到这个OFFSET函数是不标准的,实际上(也就是说Excel认为)应为=SUM(OFFSET(A$1,0,0,1,3)),他省略的Cols参数被默认为0,宽度被默认为与A$1宽度相同为1。(这种人真是不负责任)这下你明白了吧。
当你把这个函数“拉”到B2格时,因为A$1中1是绝对引用,所以A$1还是A$1,但A1不是,会被自动改为A2,函数是=SUM(OFFSET(A$1,ROW(A2)*3-3,,3)),同上算法实际是=SUM(OFFSET(A$1,3,,3))也就是=SUM(OFFSET(A$1,3,0,1,3))

逻辑这下你就明白了吧。当这个函数在第N行时,把A列3N-2行到3N行的3个数加起来。


星辰幻影
发表于 2016-12-30 16:03:22 | 显示全部楼层
我用
=SUM(A1:A3)
=SUM(A4:A6)
兔八哥_007
 楼主| 发表于 2016-12-31 01:42:10 | 显示全部楼层
本帖最后由 兔八哥_007 于 2016-12-31 01:48 编辑
随便注册 发表于 2016-12-30 02:02
这种问题高手答不了,基础问题他会无意识忽略,必须得我这样现学的才能理解你。等以后你再回来翻这帖,你也 ...


谢谢,亲说的大概理解了,抽时间实践下,每3行累加只是其中一种,还会用到其他,比如每4行累加,

亲说的对我很有用,再遇到什么问题,再来请教大家
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-30 09:52 , Processed in 0.151038 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表