在两个动态日期VBA之间插值

时间:2017-08-16 12:17:53

标签: excel vba interpolation

我们有一个每周更新的文件,其结构如下:

      ID            Code    Days  Yield
KZW1KM093436    NTK273_1343 4    2.1781
KZW1KD913708    NTK091_1370 11   2.1683
KZK1KY011222    MKM012_0122 17   2.1602
KZW1KM063603    NTK182_1360 32   2.1419
KZW1KM093477    NTK273_1347 32   2.1419
KZW1KD913740    NTK091_1374 39   2.1342
KZW1KM063629    NTK182_1362 46   2.1269
KZW1KM093501    NTK273_1350 53   2.1202

我有以下静态数据点(天):

28
91
182
273
364
730
1825
2555
3640

我希望在文件获得更新时(基本上每周)获取这些静态日的插值。文件更新后,数据结构也会发生变化(按Days排序)。如果数据中Days列中的值等于Static数据中的任何值,那么我想从Yield中获取相应的值。否则,我想从Days获取最接近的上限值和下限值并进行插值Yield

到目前为止,我能够在Static列旁边添加另一列Yield值:

Sub io()

    Dim r As Integer
    Dim maxval As Integer
    Dim c As Integer

    c = 5

    Cells(4, c) = 28
    Cells(5, c) = 91
    Cells(6, c) = 182
    Cells(7, c) = 273
    Cells(8, c) = 364
    Cells(9, c) = 730
    Cells(10, c) = 1825
    Cells(11, c) = 2555
    Cells(12, c) = 3640

    maxval = Cells(Cells(Rows.Count, 3).End(xlUp).Row, 3).Value
    Range("B1") = maxval

    r = 4

    Do Until Cells(r, 3) = "" Or Cells(r, 5) = ""
        If Cells(r, 3) > Cells(r, 5) Then
        Range(Cells(r, 1), Cells(r, 4)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Else
        If Cells(r, 5) > Cells(r, 3) Then Cells(r, 5).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        End If
        r = r + 1
    Loop

数据的结构变为:

      ID            Code    Days  Yield Static
KZW1KM093436    NTK273_1343 4    2.1781
KZW1KD913708    NTK091_1370 11   2.1683
KZK1KY011222    MKM012_0122 17   2.1602
                                         28
KZW1KM063603    NTK182_1360 32   2.1419
KZW1KM093477    NTK273_1347 32   2.1419
KZW1KD913740    NTK091_1374 39   2.1342
KZW1KM063629    NTK182_1362 46   2.1269
KZW1KM093501    NTK273_1350 53   2.1202

现在我想删除所有冗余行并添加另一个使用插值的列,但无法继续。任何帮助将不胜感激。

0 个答案:

没有答案