excel - VBA函数中的排序范围而不影响工作表中的数据
问题描述
我正在 VBA 中创建一个线性插值函数。这是它的样子:
Function INTERP(X0 As Variant, ByVal X As Range, ByVal Y As Range) As Variant
Dim i As Long
Dim N As Long
Dim X1 As Double
Dim X2 As Double
Dim Y1 As Double
Dim Y2 As Double
N = X.Rows.Count
If X0 <= Application.Min(X) Then
X2 = X.Cells(2, 1)
Y2 = Y.Cells(2, 1)
X1 = X.Cells(1, 1)
Y1 = Y.Cells(1, 1)
ElseIf X0 >= Application.Max(X) Then
X2 = X.Cells(N, 1)
Y2 = Y.Cells(N, 1)
X1 = X.Cells(N - 1, 1)
Y1 = Y.Cells(N - 1, 1)
Else
For i = 1 To N - 1
If X0 >= X.Cells(1, 1) And X0 < X.Cells(i + 1, 1) Then
X2 = X.Cells(i + 1, 1)
Y2 = Y.Cells(i + 1, 1)
X1 = X.Cells(i, 1)
Y1 = Y.Cells(i, 1)
Exit For
End If
Next i
End If
INTERP = Y1 + (Y2 - Y1) / (X2 - X1) * (X0 - X1)
End Function
为了执行插值,X
范围应按升序排序。我见过的与 Excel VBA 中的排序相关的大多数其他答案都涉及进行某种排序,该排序返回并对工作表中的数据进行排序。
在这种情况下,我根本不想更改工作表中的数据,但我需要X
按升序排序,然后Y
根据排序X
来保留它们之间的关系。我怎样才能用 VBA 做到这一点?
解决方案
保存X
并Y
作为表格(它甚至可以是没有格式的表格)。然后只需对表格进行排序,表格的其余部分将保持不变。
推荐阅读
- cytoscape - 富集图的文件格式
- reactjs - 尝试加载视频文件以做出反应时出现黑色视频屏幕?
- python - 如何在 tkinter 中正确使用 vartext?
- entity-framework-core - EFCore 通用存储库和 UnitOfWork 设计模式
- python - 我应该怎么做才能对每个条应用不同的颜色?
- kubernetes - ArgoCD 内核功能
- python - 在新表 pandas 数据框中合并均值和标准差
- javascript - React Project 显示空数组但包含值
- javascript - Highcharts X轴日期粗体
- python - 将 Chunks 中的 Pickle 文件读入 pandas