在Excel中插入数据点
我相信这是其他人以前解决过的那种问题。
一群人将要做的测量(家庭能源使用是准确的)。 他们都将在不同的时间和不同的时间间隔做到这一点。
所以我从每个人那里得到的是一组{date,价值}对,其中在date中缺lessdate。
我需要的是一组完整的{date,值}对,其中每个date的范围内的值是已知的(测量或计算)。 我期望一个简单的线性插值就足够了这个项目。
如果我认为它必须在Excel中完成。 在这样的数据集中插入最好的方法是什么(所以我每天都有价值)?
谢谢。
注意:当这些数据集完成后,我将确定斜率(即每天的使用率),由此我们可以开始进行家庭之间的比较。
附加信息在提出几点build议之后:我不想手动确定我的测量装置中的孔位置(太多不完整的测量装置!!)。 我正在寻找一些(现有的)自动为我做的。 所以如果我的意见是
{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)function为这个(相当通用)的问题。
最简单的方法可能如下:
-
在这里下载Excel加载项: 用于Microsoft Excel的XlXtrFun™额外function
-
使用函数intepolate()。 =插值($ A $ 1:$ A $ 3,$ B $ 1:$ B $ 3 D1,FALSE,FALSE)
列A和B应该包含你的input,列G应该包含你的所有date值。 公式进入E栏
我遇到过这种情况,不愿意使用加载项,因为与没有安装加载项的人共享表单非常困难。
我的办公室devise了一个相对紧凑的清洁配方(使用一点魔法的代价很高)。
注意事项:
-
该公式的工作原理是:
- 使用
MATCH
函数在正在search的值之前查找inputs
范围内的行(例如,3是3.5之前的值) - 使用
OFFSET
sselect该线的平方和下一个(浅紫色) - 使用
FORECAST
只用这两个点build立一个线性插值,并得到结果
- 使用
-
这个公式不能做外推。 确保您的search值在端点之间(我在下面的示例中通过具有极端值来执行此操作)。
不知道这对于人们来说太复杂了。 但是它具有非常便携的优点(并且比许多替代解决scheme更简单)。
如果您要复制粘贴公式,则是:
=FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1
( inputs
是一个命名范围)
有两个函数, LINEST和TREND ,你可以尝试看看哪一个给你更好的结果。 它们都带有一组已知的X和Y以及一个新的X值,并计算一个新的Y值。 不同之处在于LINEST做了一个简单的线性回归,而TREND将首先尝试在回归之前find适合您的数据的曲线。
一个很好的graphics方法来看看你的插值结果是否适合:
把你的date,值对,并使用Excel中的XY图(而不是折线图)对它们进行graphics化。 右键单击graphics上的结果线,然后单击“添加趋势线”。 有很多不同的选项来select使用哪种types的曲线拟合。 然后,您可以转到新创build的趋势线的属性,并显示公式和R平方值。
确保在格式化趋势线公式标签时,将数值格式设置为具有高精度,以便显示公式常数的所有有效数字。
YGA上面的答案不处理所需的X值与参考范围的X值相同的范围末端情况。 使用YGA给出的例子,excel公式会返回#DIV / 0! 错误,如果在9999的内插值被要求。 这显然是YGA将9999和-9999的极限值添加到input数据范围,然后假定所有预测值都在这两个数值之间的原因的一部分。 如果这种填充是不希望的或者不可能的话,另一种避免#DIV / 0的方法是! 错误是使用以下公式检查确切的input值匹配:
=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是插值结果所需的值。
注意:我只是将这个作为注释添加到原始YGApost中,但是我还没有足够的声望点。
或者。
=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值的范围
更容易把这个代码。
您可以使用Excel的“趋势线”function找出哪个公式最适合您的数据。 使用该公式,可以计算任意x
y
- 为它创build线性散射(XY)(Insert => Scatter);
- 创build多项式或移动平均趋势线,选中“在图表上显示公式”(右键单击系列=>添加趋势线);
- 将公式复制到单元格中,并用所需的x值replace
x
在A12以下的屏幕截图中:A16保存x
,B12:B16保存y
,C12包含计算任意x
y
公式。
我第一次在这里发布了一个答案,但后来发现这个问题