平均值分布在Excel的几个字段中?


3

我有一个包含一系列数据的表。
该数据用于图表中。
这些数据中有漏洞,我想用平滑的数字填写。

以此表为例:

样本表

在上面的例子中,我想填写93和68之间的3个间隙。
顺序应该是93,86.75,80.5,74.25然后是68。

我可以用什么样的公式来自动计算两者之间的数字?

编辑:间隙可以是任意数量的行,它们可以上升或下降。


当你走下坡路时,它们总是在减少吗?
Lance Roberts 2010年

列中的数字是否会有多个缺口?
Lance Roberts 2010年

并不总是积极的,可能是任何大小的差距。最左列中的时间总是以10分钟为增量,并且没有任何间隙。
Michael Galos 2010年

哇,如果你不希望它在填充值时改变增量,那么插值是很难的,仍然在处理它。
Lance Roberts 2010年

好的,虽然我可以进行插值的公式,但它不起作用,因为当第一个单元格填充时,它将改变后续单元格的增量,依此类推。由于我无法真正存储变量(对于间隙中的空白单元格数量),我无法在工作表函数中执行此操作。如果您需要VBA解决方案,请告诉我。我明天会回来,只需在带有'@'符号的评论中引用我的名字。
Lance Roberts 2010年

Answers:


1

如果您的时间间隔始终是等间距,则可以使用Excel的填充功能。

  • 选择B2285:F2289(空范围加上上下数据行)
  • 主页功能区选项卡上,选择填充,然后选择系列...
    • 系列:
    • 类型:线性
    • 趋势:是的
    • 单击确定

在Excel 2007中测试。


1

使用此VBA子,您可以选择要插入的单元格,然后激活宏。我使用了一个按钮,但你可能想要处理一个快捷键组合。

Private Sub InterpolateGap()

Dim Gap As Range
Dim GapRows As Integer, i As Integer, Increment As Integer

Set Gap = Selection
If Not Gap Is Nothing Then
    GapRows = Gap.Rows.Count
    Increment = (Gap.Cells(1, 1).Offset(-1, 0) - _ 
                 Gap.Cells(1, 1).Offset(GapRows, 0)) / GapRows
    For i = 1 To GapRows
        Gap.Rows(i).Cells(1, 1) = _ 
        Gap.Rows(i).Cells(1, 1).Offset(-1, 0) - Increment
    Next i
End If

End Sub

谢谢你,你为我提供了写自己版本的灵感!
迈克尔加洛斯2010年

0

我最后编写了一些VBA代码感谢@Lance Roberts
这段代码实际上会循环遍历每一行和每列搜索空白条目,抓取上下值并计算这种方式。
唯一的问题是当数据为空时第一行。
由于懒惰,列被硬编码为10。

Sub SetAverages()
   Dim lastrow As Integer, ncol As Integer, nrow As Integer
   Dim secondvalrow As Integer, blankrows As Integer
   Dim difference As Double, Increment As Double


    Range("A65535").End(xlUp).Select
    lastrow = ActiveCell.Row

    For ncol = 2 To 10
        For nrow = 2 To lastrow   'start after header row
            If Cells(nrow + 1, ncol).Value = "" Then
                secondvalrow = nrow + 1
                Do Until Cells(secondvalrow, ncol).Value <> "" Or secondvalrow = lastrow + 1
                    secondvalrow = secondvalrow + 1
                Loop

                blankrows = secondvalrow - nrow

                difference = Cells(secondvalrow, ncol).Value - Cells(nrow, ncol).Value
                Increment = difference / blankrows
                For i = nrow + 1 To secondvalrow - 1
                    Cells(i, ncol).Value = Cells(i - 1, ncol).Value + Increment
                Next i
            End If
        Next nrow
    Next ncol
End Sub

0

当你没有稳定的向上或向下攀升时,这将很难做到。

我最好的建议是简单地突出显示您拥有的数字,然后单击突出显示区域右下角的框,然后向下拖动以让Excel在猜测时发挥最佳作用。

替代文字

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.