ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 43358|回复: 112

[分享] 构思MOD函数模型,清晰函数机制...(编辑添加中...)(胡剑开课了...)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-2-21 22:42 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:MOD
本帖最后由 胡剑0227 于 2015-5-12 20:45 编辑

   构思MOD函数模型,清晰函数机制...

            一般涉及周期性序列时我都会立马想到MOD函数,MOD函数的作用相当广泛,但本帖重点讲对这个函数本身机制的理解。帖子后面部分也会提一下生成常用循环序
列的一般思路。

           本帖的其中一个目标是通过目测,心算就能快速准确的测算返回值。为了评估效果,大家可以先下载下面的PPT测试文件,看看大家10个小题的得分和速度!有兴趣可以直接抓图PK呀,呵呵。

===========================================================================================
                                       上传PPT文件 MOD函数心算-帖子.rar (399.99 KB, 下载次数: 1526)
===========================================================================================

           目的倒不是真的想让大家能心算MOD函数的返回值,而是培养一些感性的认识,使得可以不用每次都去工作表中执行一下才知道返回值是多少,进而熟悉这个函数的特性。只有了解一个事物我们才能更好地去使用这个事物,否则会显得陌生,心理上对陌生的东西都会有抵触,潜意识里就去回避,这不利于思路的顺畅...

           好了,言归正传,我讲一下MOD函数的模型,也许其他网友也讲过了,如果是那样我就当是再重复一遍吧。我自己曾经写过一个MOD函数的帖子,但那个帖子自己不是很满意,因为追求的是生硬的技巧特性,也许也挺正确,但并不怎么好用。所以,我尝试一下跨越自己。

           MOD函数,就是拿一根绳子在一个圆柱体上饶圈。具体说,MOD函数有两个参数,即=mod(number,divisor),number就是那根绳子的长度,divisor就是那个圆柱体的周长,在圆柱体上均匀刻上刻度,满刻度即周长

           以最简单的,两个参数都是正数为例,其运行机制可参考如下:将绳子的一端对准零刻度线,然后往刻度数值增大的方向绕,绕至最后绳子的另一端所对应的刻度即是MOD函数的返回值。MOD,哈哈,中间的那个字母O多像那个圆柱截面呀,那个M就好比绕了多少圈,D么就是最后余下的绳子所对应的刻度。

模型解析

             在这个模型中,MOD函数周期性的特点已经体现出来了,也很容易理解,即多绕一圈少绕一圈是无关于返回值的,关键是余下的部分。另外,MOD函数返回值符号和第二参数相同也体现出来了,因为返回值就是最后那根绳子末端所对应的刻度,于是返回值的符号是和第二参数相同的。

             但实际情况是两个参数不一定都是正数,根据正负搭配总共有4种情况,这就很复杂。不过,通过分析测试也可以简化为两种情况,即两参数符号相同和两参数符号不同。于是,以上运行机制的模型可以调整如下(本帖以下所称的数值即是指绝对值,符号(正负)只是方向):

             如果符号相同,那么就是从零刻度往刻度数值大的方向绕,如果方向不同就往刻度数值小的方向绕,依然是末端对准的刻度就是返回值。符号相同是种和谐,往刻度数值大的方向绕也是种和谐,这种感觉是一致的,不容易混淆了。同理,符号相异是一种别扭,往刻度数值小的方向绕也是种别扭,因此也是一一对应的。如果事物给人的感受也分阴阳,那么这里就是阴阳对应的。

             具体做几个实验吧,那样就清楚了,往刻度数值小的方向绕也能比较快地在脑海中浮现出场景:
=mod(7,-4)
            先不要考虑符号,眼里只有数值7,4,那么能快速得到最后那段绳子的长度 3(如果这个有问题请求助小学老师)。因为符号相反,所以往刻度小的方向绕,于是4绕过去3就剩下1了,于是4-3=1,刻度的符号是负的,于是最后就是-1.

=mod(-3.2,10)
            眼里只有3.2和10,于是最后那段绳子长度就是3.2,符号不同,往数值小的方向绕,于是得到的返回值=10-3.2=6.8。

好先就这样,大家可以再试试,看是否能提高速度和准确率...



待续....关键是要在脑海中呈现这样一种递增又循环的模型...
==============================================================================================
恩,这里就讲一下循环序列的构造吧,内容相对简单的,但如果是初学,那么还是有所帮助。
循环序列,如 1,2,3,1,2,3,1,2,3;或者2,3,4,5,2,3,4,5,2,3,4,5,这里就有两个关键点:周期和初始值,这里两个序列的周期分别为3和4,初始值分别为1和2,其中周期可以由MOD函数的第二参数直接确定,于是关键就是那组长度递增的绳子...以1为单位递增,于是ROW函数是不错的选择。

第一循环序列构造如下:
=MOD(ROW(1:10)-1,3)+1

第二循环序列构造如下:
=MOD(ROW(1:10)-1,4)+2

这里有一个小小的技巧,即对ROW函数部分进行了减1处理,使得第一个MOD函数返回的循环序列初始值固定为0,这样对于周期为3的序列就成为0,1,2,0,1,2...即进入一个初始态,便于直接加上一个数字作为起始值。

于是,要生成一个循环序列就是分两步走,第一确定周期,并通过ROW函数学列减1得到一个初始态,然后加上初始值就得到对应初始值和周期的循环序列了。

==========Excel函数实战技巧精粹=================
函数公开课群 246666938,进入群以后直接在聊天界面输入 #视频1001 可以下载公开课视频,不过建议直接输入 #报名 加入组织,那样毕业时你可以豪气万丈地对我说:“胡版,我当时连公开课都没听就直接报名了!!英明呀,回想起来真是痛快!“


该贴已经同步到 胡剑0227的微博

TA的精华主题

TA的得分主题

发表于 2012-2-21 22:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
MOD=M木头O绕圆D电线,呵呵

TA的精华主题

TA的得分主题

发表于 2012-2-21 23:14 | 显示全部楼层
以前只知道MOD(-7,3)会返回2,其它基本都是猜的了。。。。
今天听胡版MOD运算的方向之说,豁然开朗!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-22 09:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
函数初识篇...

熟悉的东西用起来心里才有底...{:soso_e113:}

TA的精华主题

TA的得分主题

发表于 2012-2-22 14:18 | 显示全部楼层
首页光荣{:soso_e100:}

点评

呵呵,吧数组班当头像了呀,俺深表荣幸,哈  发表于 2012-2-22 19:09

TA的精华主题

TA的得分主题

发表于 2012-2-22 14:21 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-23 09:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
根据这个模型的思路,那么 =MOD(40000,2) 和 =MOD(MOD(40000,100),2),哪个效率更高一点,呵呵

TA的精华主题

TA的得分主题

发表于 2012-2-23 09:39 | 显示全部楼层
猜一下,应该是=MOD(MOD(40000,100),2)效率高一些吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-23 09:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dl0506 发表于 2012-2-23 09:39
猜一下,应该是=MOD(MOD(40000,100),2)效率高一些吧

呵呵,没有测试过,抽空可以测试一下,想想应该是

TA的精华主题

TA的得分主题

发表于 2012-2-23 09:52 | 显示全部楼层
胡剑0227 发表于 2012-2-22 09:19
函数初识篇...

熟悉的东西用起来心里才有底...

看到大名拜读了,我发现了一个问题,当符号都为正时,参数number<divisor时值永远为number,当符号都为负时,参数number>divisor时,值永远为number,请问这是为什么。

点评

因为一圈都没能绕够...  发表于 2012-2-23 09:56
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-22 10:24 , Processed in 0.052570 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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