百分在线急求!EXCEL数据点不固定,如何利用公式插值。

按下数据的趋势期插值补充 含水那列(b列)空白的格
日期 含水(%)
2012-02-23 95.1
2012-02-24
2012-02-25
2012-02-26
2012-02-27
2012-02-28
2012-02-29
2012-03-01
2012-03-02
2012-03-03 94.4
2012-03-04
2012-03-05
2012-03-06
2012-03-07
2012-03-08
2012-03-09
2012-03-10
2012-03-11 94.6
2012-03-12 94.7
2012-03-13 92.6
2012-03-14 92.7
2012-03-15 92.8
2012-03-16
2012-03-17
2012-03-18
2012-03-19
2012-03-20
2012-03-21
2012-03-22
2012-03-23 91.2
2012-03-24
2012-03-25
2012-03-26
2012-03-27
2012-03-28
我意思是空白格中填充例如 2012-1-1 为 90 2012-1-3 为80 则 2012-1-2 为 85这样线性插值。

设日期和含水(%)分别在a1和b1单元格。在c2输入:
=IF(B2="",ROUND(RAND()*(INDEX(B2:B15,MATCH(1,1/(B2:B15<>0),))-C1),1)+C1,B2)
输入完成后千万不要按回车。上面的是数组公式,需要按ctrl+shift+回车三个键结束输入。输入完成后会在公式前后出现大括号。
之后下拉填充就好了。

函数解析:
判断b2的单元格是否为空,如果不会空返回b2的值。不然,在b2到b21这20个数中查找最近的一个非空单元格的数,已这个数减去当前单元格上面的数作为最大数去随机数,然后再加上当前单元格上面的数。追问

不懂数组没看懂,但是感觉好厉害的样子。复制进去ctrl+shift+回车下拉返回了VALUE错误。另外这个函数如果范围扩大到上千行还适用么?而且中间数据点几乎没有规律还可以继续用么。我几乎放弃用函数了。。。VBA还一点不会杯具啊。。。

追答

这个公式要满足:
1、输入时是第二行或更后面。
2、输入的这个单元格左边需要有数据。
你可以将你表格的日期和含水(%)分别所在的单元格告诉我。

范围扩大是可以的。我现在是不知道你有多少行数据。因此,已间隔20行来判断的。如果你需要多的话,可以用下面的公式:
=IF(B2="",ROUND(RAND()*((INDEX(B2:B201,MATCH(1,1/(B2:B2010),))-C1)/2),1)+C1,B2)
现在这个就可以判断间隔达到200的数据了。如果你还不够,将上面公式中的B201后面的数字改大就好了。

追问

还是value错误。您的邮箱多少 样表跟您发过去可以么?

追答

[email protected]

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-19

1.首选你把有含水(%)的行筛选出来复制到一个空白区域

2.你用Forecast()函数求出每一个日期对应的含水百分比(这就是根据那些已知日期和含水(%)按照Y=aX+b的线性关系推导出的未知日期的含水百分比)

3.那些有百分比的就还按照原来的数据,没有的采用预测的填到空白区域。

当然你用trend()函数也行,这两个函数都是用最小二乘法拟合线性曲线

做出来的样子大概是这样的:

第2个回答  2012-12-19
=IF(B2="",(C1+C3)/2,B2)
注意要打开迭代计算。
第3个回答  2012-12-19
如果需要在B列没数值的栏位全部加入0%,保留原来有数值的栏位,那么你可以这样
1. C1编辑,=if(B1="", 0, B1)
2. 复制公式至所有行
3. 选定C列并复制
4. 选中B列,右键-选择性粘贴-数值,将C列的数值覆盖到B列中
5. 删除C列,完成
不知道是不是你要的结果,臆测一下追问

我意思是空白格中填充例如 2012-1-1 为 90 2012-1-3 为80 则 2012-1-2 为 85这样线性插值。

追答

首先你不确定B有数字的栏位是否等间距出现的
用公式来实现是比较困难的,你可以用VBA来实现

第4个回答  2012-12-19
=依次+(95.1-94.4)/8
第5个回答  2012-12-19
描述不清,目的不明,追问

我意思是空白格中填充例如 2012-1-1 为 90 2012-1-3 为80 则 2012-1-2 为 85这样线性插值。

追答

公式我没用过,不过如果数据不多的话,可以用“填充”解决:选取空白格并包括最近的上下两个数据,点工具栏里的“填充”,选取“序列”/“等差数列”/勾选“预测趋势”,回车就可以完成线性插值了。