ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 线性内插值自定义函数-求大师优化

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-2-21 15:32 | 显示全部楼层 |阅读模式
本帖最后由 YZC51 于 2016-2-21 15:33 编辑

线性内插值自定义函数-求大师优化

学习czzqb版主《线性内插值应用实例》 的帖子,受益颇丰!
特献上学习心得“线性内插值自定义函数”,水平所限,错误难免,还请各位大师斧正!
原帖地址:http://club.excelhome.net/thread-188522-1-1.html

Function Pola(sr, n, o) '插值函数
    If Application.IsNumber(n) Then n = Chr(64 + n)
    If Application.IsNumber(o) Then o = Chr(64 + o)
    l = Range(n & 65536).End(3).Row
    m = Range(n & l)
    If sr > m Then Pola = "溢出": Exit Function
    If sr = m Then Pola = Range(o & l) & "": Exit Function
    i = Application.Match(sr, Range(n & ":" & n), 1)
    Set rn1 = ActiveSheet.Range(o & i & ":" & o & i + 1)
    Set rn2 = ActiveSheet.Range(n & i & ":" & n & i + 1)
    Pola = Application.Trend(rn1, rn2, sr, 1)
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-21 16:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
函数2
  1. Function Pola2(sr) '插值函数
  2.     n = [a1:z1].Find("X", , , , 1).Column
  3.     n = Chr(64 + n)
  4.     o = [a1:z1].Find("Y", , , , 1).Column
  5.     o = Chr(64 + o)
  6.     l = Range(n & 65536).End(3).Row
  7.     m = Range(n & l)
  8.     If sr > m Then Pola2 = "溢出": Exit Function
  9.     If sr = m Then Pola2 = Range(o & l) & "": Exit Function
  10.     i = Application.Match(sr, Range(n & ":" & n), 1)
  11.     Set rn1 = ActiveSheet.Range(o & i & ":" & o & i + 1)
  12.     Set rn2 = ActiveSheet.Range(n & i & ":" & n & i + 1)
  13.     Pola2 = Application.Trend(rn1, rn2, sr, 1)
  14. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-21 16:07 | 显示全部楼层
附件
一维内插值(函数).rar (9.47 KB, 下载次数: 124)

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-21 21:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
函数3
  1. Function Pola1(sr, n, o) '插值函数****纯数学公式
  2.     If Application.IsNumber(n) Then n = Chr(64 + n)
  3.     If Application.IsNumber(o) Then o = Chr(64 + o)
  4.     l = Range(n & 65536).End(3).Row
  5.     i = Application.Match(sr, Range(n & ":" & n), 1)
  6.     A = Range(o & i)
  7.     B = Range(o & i + 1)
  8.     c = Range(n & i)
  9.     D = Range(n & i + 1)
  10.     Pola1 = (B - A) * (sr - c) / (D - c) + A
  11. End Function
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-21 22:39 | 显示全部楼层
函数4
再次优化
  1. Function Pola3(sr, n, o) '插值函数****纯数学公式
  2.     P = Chr(64 + n)
  3.     i = Application.Match(sr, Range(P & ":" & P))
  4.     A = Cells(i, o)
  5.     B = Cells(i + 1, o)
  6.     c = Cells(i, n)
  7.     D = Cells(i + 1, n)
  8.     Pola3 = (B - A) * (sr - c) / (D - c) + A
  9. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-25 14:16 | 显示全部楼层
本帖最后由 YZC51 于 2016-2-25 16:12 编辑

二维插值自定义函数

  1. Function TPola(x, y, r As Range) '¶þά
  2. xw = Application.Match(x, Application.Index(r, 1, 0), 1)
  3. yw = Application.Match(y, Application.Index(r, 0, 1), 1)
  4. x1 = r(1, xw)
  5. X2 = r(1, xw + 1)
  6. Y1 = r(yw, 1)
  7. Y2 = r(yw + 1, 1)
  8. q11 = r(yw, xw)
  9. q12 = r(yw + 1, xw)
  10. q21 = r(yw, xw + 1)
  11. q22 = r(yw + 1, xw + 1)
  12. YY1 = (y - Y1) / (Y2 - Y1) * (q12 - q11) + q11
  13. YY2 = (y - Y1) / (Y2 - Y1) * (q22 - q21) + q21
  14. TPola = (x - x1) / (X2 - x1) * (YY2 - YY1) + YY1
  15. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-25 14:25 | 显示全部楼层
本帖最后由 YZC51 于 2016-2-25 16:12 编辑

使用说明:
本函数有3个参数:
X,为X1行中的任意数值
Y,为Y1列中的任意数值
Z,为数据表区域
例如:
为X1列中的任意数值
=TPola(K2,L2,A1:I13)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-9-11 04:43 | 显示全部楼层
YZC51 发表于 2016-2-25 14:25
使用说明:
本函数有3个参数:
X,为X1行中的任意数值

老师:您写的自定义函数很好!但平时使用自定义函数的,大都是excel函数公式转过来的人【和我一样】,对VBA知之甚少。最好自定义函数代码后面随附一个附件,里面要有输入语法和实例详解。这样一目了然,能够吸引更多的参与者。

TA的精华主题

TA的得分主题

发表于 2020-3-4 12:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
牛牛牛牛牛牛牛

TA的精华主题

TA的得分主题

发表于 2020-3-4 12:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个用内置函数TREND就行吧?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 23:33 , Processed in 0.039742 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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