当我尝试调用自定义函数时,我收到了#VALUE错误。它应该做的只是一些数学。有谁看到这里可能有什么问题?
我从互联网上复制了这个:
来源:
http://www.engineerexcel.com/linear-interpolation-vba-function-in-excel/
$_POST
这是我认为工作表函数调用可能导致错误的简化版本:
Function LININTERP(x, xvalues, yvalues)
'x and y values must be in ascending order from top to bottom.
'x must be within the range of available data.
x1 = Application.WorksheetFunction.Index(xvalues, Application.WorksheetFunction.Match(x, xvalues, 1))
x2 = Application.WorksheetFunction.Index(xvalues, Application.WorksheetFunction.Match(x, xvalues, 1) + 1)
y1 = Application.WorksheetFunction.Index(yvalues, Application.WorksheetFunction.Match(x, xvalues, 1))
y2 = Application.WorksheetFunction.Index(yvalues, Application.WorksheetFunction.Match(x, xvalues, 1) + 1)
LININTERP = y1 + (y2–y1) * (x–x1) / (x2–x1)
End Function
我在不相关的工作簿中的测试数据: (全部格式化为"一般")
Function LININTERP(x, x1, x2, y1, y2)
LININTERP = y1 + (y2–y1) * (x–x1) / (x2–x1)
End Function
只需将实际数学插入单元格即可按预期工作。调用该函数会引发#VALUE错误。
我的函数保存在我保存的工作簿中的模块中,并作为加载项添加到Excel中。
答案 0 :(得分:3)
我对你的公式和数据的抽样在连字符上引起错误,而不是被解释为“减号”。实际上,它们作为unicode 8211出现。重新打印它们,将vars声明为变体并删除import java.util.*;
class Try
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
while(true)
{
try{
System.out.println("Enter a no ");
int s=Integer.parseInt(sc.next()); // or sc.nextLine() if you wish to get multi digit numbers
}catch(Exception e)
{
System.out.println("Invalid input try again");
}
}
}
}
解决了问题。
...WorksheetFunction...
故事的道德:不要相信你在互联网上找到的一切。