2

我试图插入的数据如下所示:

=X= 
0
0
0
0
0
0.5
1
3.1
5.5
6.2
8.5

=Y=
0.019607843
0.019607843
0.019607843
0.019607843
0.019607843
0.117647059
0.137254902
0.156862745
0.176470588
0.196078431
0.215686275

=Z=
0.019607843
0.039215686
0.058823529
0.078431373
0.098039216
0.117647059
0.137254902
0.156862745
0.176470588
0.196078431
0.215686275
0.235294118

我正在使用http://www.xlxtrfun.com/XlXtrFun/XlXtrFun.htm插件。在一个单元格中,我有来自这个插件的插值公式,除了这个特定的数据集之外,它大部分时间都能正常工作。

AM1我有这个代码:

=插值($F$2:$F$51,$D$2:$D$51,M2,TRUE,FALSE)

其中 F 列是 Y 数据 D 是 X 数据,M 是 Z

问题在于,在 X 组数据中有连续值 0,所以在带有公式的单元格中,我得到一个#NUM!

我尝试将 0 稍微更改为 0.1 0.2 等,之后它可以正常工作,所以我知道公式是正确的,但是有了这些数据,我无法更改它,否则它最终会彻底改变结果。那么有人知道我可以保留这些值并保持正确的插值吗?

4

2 回答 2

1

对于线性插值,我认为这个公式有效(酌情复制下来):

=   INDEX(F$6:F$16,MATCH(M6,D$6:D$16))+ 
(M6-INDEX(D$6:D$16,MATCH(M6,D$6:D$16)))*INDEX(F$6:F$16,MATCH(M6,D$6:D$16)+1)-  
    INDEX(F$6:F$16,MATCH(M6,D$6:D$16)))/(INDEX(D$6:D$16,MATCH(M6,D$6:D$16)+1)-  
    INDEX(D$6:D$16,MATCH(M6,D$6:D$16)))  

SO14272723 示例

如果确实如此,则完全归功于Jon Peltier(否则只能怪我!)

于 2013-01-11T14:58:28.500 回答
1

无论如何,如果您想尝试将上述公式作为 VBA 函数(以保持工作表清洁)......您可以尝试以下方法。也许今天是我不想写更多代码的一天;)所以它对我有用。如果它对你有用,那么感谢Tushar Mehta LOL 我刚刚从@pnuts 复制了该标语行。但是在上面的站点中,您有更多与国际刑警组织相关的代码。也请尝试一下。

Option Explicit
Option Compare Text

Function RealEqual(X, Y) As Boolean
    RealEqual = Abs(X - Y) <= 0.00000001
End Function

Function LinearInterp(XVals, YVals, TargetVal)
   Dim MatchVal
   On Error GoTo ErrXit

   With Application.WorksheetFunction
    MatchVal = .Match(TargetVal, XVals, 1)
     If MatchVal = XVals.Cells.Count _
            And RealEqual(TargetVal, .Index(XVals, MatchVal)) Then
        LinearInterp = .Index(YVals, MatchVal)
     Else
        LinearInterp = .Index(YVals, MatchVal) _
            + (.Index(YVals, MatchVal + 1) - .Index(YVals, MatchVal)) _
                / (.Index(XVals, MatchVal + 1) _
                    - .Index(XVals, MatchVal)) _
                * (TargetVal - .Index(XVals, MatchVal))
     End If
   End With
    Exit Function
ErrXit:
    With Err
     LinearInterp = .Description & "(Number= " & .Number & ")"
    End With
End Function

工作表视图:

在此处输入图像描述

于 2013-01-11T19:28:14.920 回答