平均値はExcelの複数のフィールドに分散していますか?


3

一連のデータを含むテーブルがあります。
このデータはグラフで使用されます。
このデータには、平滑化された数字で埋めたい穴があります。

たとえば、この表を見てください。

sample table

上の例では、93から68の間に3つのギャップがあります。
シーケンスは93、86.75、80.5、74.25そして68になります。

その間の数値を自動計算するためにどのような式を使用できますか?

編集する ギャップは任意の数の行にすることができ、それらは上下に移動することができます。


あなたが下がるにつれて、彼らは常に減少していて、そして常にポジティブですか?
Lance Roberts

列の数字には複数のギャップがありますか?
Lance Roberts

常に前向きではなく、サイズの差がある可能性があります。一番左の列の時間は常に10分の増分であり、少しのギャップもありません。
Michael Galos

うわー、あなたはまだそれに取り組んで、あなたがそれで値を埋めるときにそれが増分を変えたくないときに補間は難しいです。
Lance Roberts

補間の計算式はできますが、最初のセルが埋められると、それに続くセルの増分が変更されるなどの理由で、うまくいきません。 (ギャップ内の空白セルの数に対して)変数を実際に格納することはできないので、ワークシート関数では実行できません。 VBAソリューションが必要かどうかを教えてください。私は明日戻ってきます、 '@'サインを付けたコメントで私の名前を参照してください。
Lance Roberts

回答:


1

あなたの時間間隔が 常に等間隔 あなたはExcelのを使用することができます 塗りつぶし 特徴。

  • B2285:F2289(空の範囲と上下のデータ行)を選択します。
  • ホーム リボンタブ、選択 塗りつぶし その後 シリーズ...
    • シリーズの:
    • タイプ: リニア
    • 傾向: はい
    • クリック OK

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

おかげで、あなたは私に自分のバージョンを書くためのインスピレーションを与えてくれました!
Michael Galos

0

@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が推測で最善の仕事をさせるために下にドラッグすることです。

alt text

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.