1 如何动态修改excel的输出结果行数

https://blog.csdn.net/ppzgghgzshpph/article/details/117934691
比如计算水面线,有时需要输出10行,步长为100m,有时候需要输出20行,步长为50m

2 显式计算

就是将计算过程显示出来,传统的计算过程显示了引用的单元格,而下面的代码,将计算过程中引用的单元格直接替换成被引用单元格内的数值。如下图,计算过程显示的引用单元格B2和B3,用了自定义函数ShowFormula函数后,显示的被引用单元格里的数字10和5.5。
excel显示计算过程函数

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