ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 EH云课堂直播课程免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 187195|回复: 362

[原创] [原创]揭开Excel平滑曲线的秘密

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2005-11-22 15:48 | 显示全部楼层 |阅读模式

关键词: 平滑,贝塞尔,默认,查找函数值,查值,插值,找值,已知点,曲线上

附件详细说明了Excel画平滑曲线散点图的算法,并且提供了一个自定义函数 BezierInt() ,让用户可以随时查找曲线上任意点的坐标(函数值)


[此贴子已经被little-key于2008-4-15 10:12:53编辑过]

JwS2UIMz.rar

50.68 KB, 下载次数: 20427

[原创][原创] 揭开Excel平滑曲线的秘密

评分

参与人数 6鲜花 +8 收起 理由
xwswpi + 2 太强大了
sh205 + 1 感谢帮助
dhpdssg + 1 太强大了
俩俩相忘lrl + 1 优秀作品
roymate + 1 太强大了

查看全部评分

TA的精华主题

TA的得分主题

发表于 2005-11-22 15:56 | 显示全部楼层

我第一个顶~

一直在等海底眼兄的这个帖子,下载学习!

TA的精华主题

TA的得分主题

发表于 2005-11-22 16:00 | 显示全部楼层

建议给“精华帖”!

能否说明一下制作过程,好让我们这些菜鸟学习一下!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-11-22 16:34 | 显示全部楼层

关键词: 平滑,贝塞尔,默认,查找函数值,查值,插值,找值,已知点,曲线上

附件详细说明了Excel画平滑曲线散点图的算法,并且提供了一个自定义函数 BezierInt() ,让用户可以随时查找曲线上任意点的坐标(函数值)

附件的 .mht文件,是一个简单介绍贝塞尔三次插值的文档,可以用IE打开,更多贝塞尔插值的算法,可以用搜索引擎找

附件的 .xls文件,打开以后,会看见三个工作表,分别演示了

找一个数值在曲线上的一组对应点

找一个数值在曲线上的所有对应点

和贝塞尔曲线是怎样在通过每两个节点的 (每一对输入的X-Y数值代表平面坐标系的一个点,称为节点,Excel的平滑曲线通过每一个节点)

要在其他Excel文档使用 BezireInt() 函数,需要按Alt+F11,双击模块一

复制所有文字

然后打开其他Excel文档按Alt+F11,插入---模块,然后粘贴所有文字

自定义函数的使用方法是:

在空白单元格输入 =BezierInt(X坐标的范围,Y坐标的范围,待查的数值)

函数就会返回一个包含六个元素的数组,分别是三个点的X,Y坐标

如:

你根据 a1:a4的数值作为X值,b2:b4的数值作为Y值,画了一个平滑线散点图

想查找c1的数值是不是在这条曲线上

就可以输入

=Index( BezierInt(a1:a4,b1:b4,c1) ,1,1) 得到曲线上第一个 X值=C1数值的点的X坐标 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,2) 得到曲线上第一个 X值=C1数值的点的Y坐标

=Index( BezierInt(a1:a4,b1:b4,c1) ,1,3) 得到第2个 X值=C1数值的点的X坐标 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,4) 得到第2个 X值=C1数值的点的Y坐标

=Index( BezierInt(a1:a4,b1:b4,c1) ,1,5) 得到第3个 X值=C1数值的点的X坐标 =Index( BezierInt(a1:a4,b1:b4,c1) ,1,6) 得到第3个 X值=C1数值的点的Y坐标

如果有多段曲线上的点包含C1的数值,那么可以增加输入参数,指定从哪个节点开始查找

=Index( BezierInt(a1:a4,b1:b4,c1,3),1,1) 得到从第三组X-Y数据开始查找,返回第一个符合C1数值的点的X坐标 =Index( BezierInt(a1:a4,b1:b4,c1,3),1,2) 得到从第三组X-Y数据开始查找,返回第一个符合C1数值的点的Y坐标

函数默认输入数值是X值,要根据Y值找点的话,还可以增加输入参数,指定输入的是Y值 =Index( BezierInt(a1:a4,b1:b4,c1,1,"Y"),1,1) 得到返回曲线上第一个 Y值=C1数值的点的X坐标 如此类推......

TA的精华主题

TA的得分主题

发表于 2005-11-22 16:36 | 显示全部楼层
本帖最后由 ExcelHome 于 2012-10-6 15:33 编辑

非常感谢,介绍得非常详细!又学了一招半式![em04][em08]

 

 

TA的精华主题

TA的得分主题

发表于 2005-11-22 16:48 | 显示全部楼层
以下是引用york888在2005-11-22 16:00:10的发言:

建议给“精华帖”!

能否说明一下制作过程,好让我们这些菜鸟学习一下!

汗..........

这个世界怎么了?是个人都敢称菜鸟~

你要还是菜鸟的话~ 我们这些算啥啊~ 呵呵

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-11-22 16:50 | 显示全部楼层

感谢两位的大力支持

哦,忘了说一下,这个附件的源代码是公开的,而且加了比较详细的注释,会写VBA的朋友看一下会更加了解Excel这个不公开的秘密,^_^

TA的精华主题

TA的得分主题

发表于 2005-11-22 17:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-11-22 17:59 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-11-22 18:30 | 显示全部楼层

谢谢分享!

有没有学习VBA相关的资料呢?

哪位高手整理下?

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,每天学会一个新技能

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

GMT+8, 2019-10-16 13:13 , Processed in 0.073598 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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