在Excel中插入数据点

时间:2009-06-25 11:54:10

标签: excel date interpolation

我确信这是其他人多次解决过的问题。

一群人准备进行测量(确切地说是家庭能源使用情况)。 所有这些人都会在不同的时间和不同的时间间隔做到这一点。

所以我从每个人那里获得的是一组{date,value}对,其中集合中缺少日期。

我需要的是一套完整的{date,value}对,其中每个日期都包含已知值(测量或计算)的范围。 我希望这个项目能够进行简单的线性插值。

如果我认为必须在Excel中完成。 在这样的数据集中插值的最佳方法是什么(所以我每天都有一个值)?

感谢。

注意:当这些数据集完成后,我将确定斜率(即每天的使用量),然后我们就可以开始进行家庭到家的比较。

附加信息在提出几条建议之后: 我不想手动找出测量装置中的孔位置(太多不完整的测量装置!!)。 我正在寻找一些(现有的)自动为我做的事情。 所以,如果我的输入是

{2009-06-01,  10}
{2009-06-03,  20}
{2009-06-06, 110}

然后我希望自动获得

{2009-06-01,  10}
{2009-06-02,  15}
{2009-06-03,  20}
{2009-06-04,  50}
{2009-06-05,  80}
{2009-06-06, 110}

是的,我可以编写执行此操作的软件。我只是希望有人已经为这个(相当普遍的)问题提供了“准备运行”软件(Excel)功能。

7 个答案:

答案 0 :(得分:29)

我遇到了这个并且不愿意使用加载项,因为它很难与没有安装加载项的人共享表单。

我的同事设计了一个相对紧凑的清洁配方(使用一点魔法的代价很高)。

注意事项:

  • 该公式的工作原理如下:

    • 使用MATCH函数在搜索的值之前找到inputs范围内的行(例如3是3.5之前的值)
    • 使用OFFSET s选择该行的平方和下一个(浅紫色)
    • 使用FORECAST仅使用这两个点构建线性插值,并获得结果
  • 这个公式不能做推断;确保你的搜索值在端点之间(我在下面的例子中通过具有极值来执行此操作)。

不确定这对于人们来说是否过于复杂;但它具有非常便携的优点(并且比许多替代解决方案更简单)。

如果要复制粘贴公式,则为:

=FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1

inputs是命名范围)

答案 1 :(得分:5)

有两个功能,LINESTTREND,您可以尝试查看哪些功能可以获得更好的效果。它们都采用已知X和Y的集合以及新的X值,并计算新的Y值。区别在于LINEST进行简单的线性回归,而TREND将首先尝试在回归之前找到适合您数据的曲线。

答案 2 :(得分:5)

最简单的方法可能如下:

  1. 在此处下载Excel插件:XlXtrFun™ Extra Functions for Microsoft Excel

  2. 使用函数intepolate()。 =插值($ A $ 1:$ A $ 3,$ B $ 1:$ B $ 3 D1,FALSE,FALSE)

  3. A列和B列应包含您的输入,G列应包含所有日期值。公式进入E列。

答案 3 :(得分:2)

一种很好的图形方式,可以查看插值结果的适合程度:

使用Excel中的XY图表(而不是折线图)获取日期,值对并绘制图形。右键单击图形上的结果行,然后单击“添加趋势线”。有许多不同的选项可供选择使用哪种类型的曲线拟合。然后,您可以转到新创建的趋势线的属性,并显示等式和R平方值。

确保在格式化趋势线公式标签时,将数值格式设置为具有高精度,以便显示公式常量的所有有效数字。

答案 4 :(得分:2)

YGA的上述答案并未处理期望的X值与参考范围的X值相同的范围结束。使用YGA给出的示例,excel公式将返回#DIV / 0!如果要求插入值为9999,则出错。这显然是YGA在输入数据范围中添加9999和-9999的极端点的原因之一,然后假设所有预测值都在这两个数字之间。如果这种填充是不希望的或不可能的,另一种方法是避免#DIV / 0!错误是使用以下公式检查确切的输入值匹配:

=IF(ISNA(MATCH(F3,inputs,0)),FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1)),OFFSET(inputs,MATCH(F3,inputs)-1,1,1,1))

其中F3是需要插值结果的值。

注意:我刚刚将此作为评论添加到原YGA帖子中,但我还没有足够的声望点。

答案 5 :(得分:1)

替代地

=INDEX(yVals,MATCH(J7,xVals,1))+(J7-MATCH(J7,xVals,1))*(INDEX(yVals,MATCH(J7,xVals,1)+1)-INDEX(yVals,MATCH(J7,xVals,1)))/(INDEX(xVals,MATCH(J7,xVals,1)+1)-MATCH(J7,xVals,1))

其中j7是x值。

xvals是x值的范围 yvals是y值的范围

更容易将其放入代码中。

答案 6 :(得分:1)

您可以使用Excel"趋势线"找出最适合您数据的公式。特征。使用该公式,您可以为y

计算x
  1. 为其创建线性散射(XY)(Insert => Scatter);
  2. 创建多项式或移动平均线趋势线,选中"显示等式 图表" (右键单击系列=>添加趋势线);
  3. 将公式复制到单元格中,并将x替换为所需的x值
  4. 在A12截面下:A16保持x,B12:B16保持y,而C12包含计算任何y的公式{1}}。

    Excel Interpolation

    我首先发布了答案here,但后来发现了这个问题