2017-06-15 7 views
0

列A(時間)を通り、すべての整数があるはずの新しい行を作成できるExcelマクロを探しています。新しい行が作成された後、列DおよびEの値をその新しい行に対して補間する必要があります。行もハイライト表示されます。最後に、強調表示された行はすべて非表示にする必要があります(これは、セルの色でフィルターで行うことができます)。Excel:新しい行を作成して補間する

私が考えている最大の問題は、新しい行を挿入するときです。なぜなら、常に新しい行を挿入するのは、その間の行の数が同じではないからです。隣接する行のセルを比較することを考えましたが、これを行う方法がわかりません。

以下は、私が必要とするものを説明するためのイメージです。 (マイナス非表示の行)ここImage Example

+2

'もしINT(.cells(I、 "A")。値2)<> INT(.cells(I + 1、 "A")。値2)を補間 – Jeeped

+0

私はキュービックスプラインでこれを正確に行っています。ソリューションが複雑すぎます。あなたが望むことをするには、 'VLOOKUP()'と 'FORECAST()'を使ってみてください。 – ja72

答えて

0

は、私はあなたが「補間」の部分のために何をしたいの数学わからない....あなたの「最大の問題」のためのコードです:

Sub Insert_whole_Number_row() 
    C = 1 
    R = ActiveCell.Row 
    If Cells(R, C) = "" Then Exit Sub 
    Do Until Cells(R, C) = "" 
     If Int(Cells(R, C)) <> Int(Cells(R + 1, C)) Then 
      Rows(R + C).Insert 
      R = R + 1 
      Cells(R, C) = Int(Cells(R + 1, C)) 
      Range(Cells(R, C), Cells(R, C + 5)).Interior.ColorIndex = 6 
     End If 
     R = R + 1 
    Loop 
    MsgBox "Done...." 
End Sub 
+0

マイクありがとう!私はElseIfを追加して、時間データがすでに整数であった場合に新しい行を作成しないようにしました。補間は、y = y1 +(x-x1)*((y2-y1)/ x2-x1)の形式で行う必要があります。最初の投稿の写真では、選択したセルとして表示されます。 私はRange.FormulaとRange.FormulaR1C1を使ってこれを試みました。私は数式を書き出している間に特定のセルを参照する方法を見つけることができませんでした。 – Spencer

1

私は思いますこれはあなたが望むものです。 VBAソリューションが、エクセル1

pic

  1. 全体数は(下のセル「E3」をして)使用したい値を持つテーブルを作成し
  2. は、最寄りの数の行を見つけることができませんindex=MATCH(E3,$B$3:$B$105)
  3. 前と次のtt1=INDEX($B$3:$B$105, $F3)t2=INDEX($B$3:$B$105, $F3+1)
  4. が前と次のxx1=INDEX($C$3:$C$105, $F3)とをゲット
  5. `次いでxx=FORECAST(E3,I3:J3,G3:H3)
関連する問題