1 如何动态修改excel的输出结果行数
https://blog.csdn.net/ppzgghgzshpph/article/details/117934691
比如计算水面线,有时需要输出10行,步长为100m,有时候需要输出20行,步长为50m
2 显式计算
就是将计算过程显示出来,传统的计算过程显示了引用的单元格,而下面的代码,将计算过程中引用的单元格直接替换成被引用单元格内的数值。如下图,计算过程显示的引用单元格B2和B3,用了自定义函数ShowFormula
函数后,显示的被引用单元格里的数字10和5.5。
3 插值查二维表函数
注意,必须先将所查数据排序,即竖向和横向是排序的,递增或递减,不能是无序的。规范所带表格肯定是排好序的,不必担心。
'20210717秦修改代码
Public Function chazhi2(ary As Range, x0, y0 As Variant)
n = ary.Rows.Count '统计行数
m = ary.Columns.Count '统计列数
i = 2
Do While x0 > ary.Cells(1, i).Value And i < m 'x0位于i-1与i列之间
i = i + 1
Loop
j = 2
Do While y0 > ary.Cells(j, 1).Value And j < n 'y0位于j-1与j行之间,原代码里这里用的是i<n
j = j + 1
Loop
If i = 2 Then
i = 3
End If
If j = 2 Then
j = 3
End If
k1 = (x0 - ary.Cells(1, i - 1).Value) / (ary.Cells(1, i).Value - ary.Cells(1, i - 1).Value) '计算系数
k2 = (y0 - ary.Cells(j - 1, 1).Value) / (ary.Cells(j, 1).Value - ary.Cells(j - 1, 1).Value)
zhi1 = ary.Cells(j - 1, i - 1).Value + k1 * (ary.Cells(j - 1, i).Value - ary.Cells(j - 1, i - 1).Value) '先横向插值
zhi2 = ary.Cells(j, i - 1).Value + k1 * (ary.Cells(j, i).Value - ary.Cells(j, i - 1).Value)
chazhi2 = zhi1 + k2 * (zhi2 - zhi1) '再竖向插值
End Function
' 测试
Sub test()
Dim t As Variant
Sheets("3.堤防表格").Select
t = chazhi2(Range("C86:M92"), 1, 0.011)
End Sub
'编者:wenguoli3
'完成后未检验
'请试用,如有问题请与我联系
4 插值查一维表
最好做成vba自定义函数。
Public Function chazhi(ary As Range, x0 As Variant)
n = ary.Rows.Count '统计行数
i = 1
Do While x0 > ary.Cells(i, 1).Value 'x0位于i-1与i列之间
i = i + 1
Loop
k1 = (x0 - ary.Cells(i - 1, 1).Value) / (ary.Cells(i, 1).Value - ary.Cells(i - 1, 1).Value) '计算系数
chazhi = ary.Cells(i - 1, 2).Value + k1 * (ary.Cells(i, 2).Value - ary.Cells(i - 1, 2).Value) '先横向插值
End Function
'测试
Sub test()
Dim t As Variant
t = chazhi(Range("b2:c6"), 6)
End Sub
5 不定参数(变参数)的VBA函数方法
我们在使用一些函数的时候,里面的参数可以任意多个,是怎么做到的呢。以下是一个例子——分段计算管道水力学函数。
6 vlookup()和sumproduct()函数
前者用于单条件查询,必须先将所查数据排序,后者用于多条件复杂逻辑条件查询和计算:如果是“或”条件就相加,“且”条件就相乘。
=SUMPRODUCT((第1列满足第1条件)(第2区域满足第2条件)……(第n区域满足第n条件) 像这样的形式就是根据条件计数
=SUMPRODUCT((第1列满足第1条件)(第2区域满足第2条件)……(第n区域满足第n条件)*(某列区域)像这样的形式就是条件求和能用函数的尽量用函数,避免用VBA。
7 单变量求解转换为循环迭代
以前有一些表格里求解方程用了“单变量求解”的方式,缺点是需要手动设置目标值。
可以转换为循环迭代,这样就能自动计算了。
8 国内外excel计算书网址
http://yakpol.net/index.html
http://www.engineering-international.com/
国内http://okok.org/
作者:秦晓川 创建时间:2022-07-03 13:17
最后编辑:秦晓川 更新时间:2024-12-21 14:14
最后编辑:秦晓川 更新时间:2024-12-21 14:14