как линейно интерполировать в Excel на основе пустых ячеек - PullRequest
0 голосов
/ 09 января 2019

Первый макрос выполняет предопределенную проверку, чтобы найти пропуски в наборе данных y и z: у нас есть данные x, порядок которых начинается с 1-7. Значения y и z являются значениями с пробелами, которые подлежат интерполяции по x (номер заказа).

Решение представлено ниже

например:

x     y    z  
1     2    3    
2     4    6    
3     ?    8  ' interpolation of y  between x=2 and x=4    
4     8    ?  ' interpolation of z between x=3 and x= 5    
5     12   14

Отредактированная версия 2

Public Sub Interpol_Klicken()

Dim i As Long
Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim x As Double
Dim rngY As Range
Dim iCol  As Long
Dim iRow  As Long

Set rngY = Worksheets("Z").Range("A1:D10")

 iRow = rngY.Rows.Count
 iCol = rngY.Columns.Count


 For iCol = 2 To rngY.Columns.Count
 For iRow = 2 To rngY.Rows.Count

 If rngY.Cells(iRow, iCol).Value = "" Then

 y2 = rngY.Cells(iRow, iCol).Offset(RowOffset:=1).Value
 y1 = rngY.Cells(iRow, iCol).Offset(RowOffset:=-1).Value

 x2 = rngY.Cells(iRow, 1).Offset(RowOffset:=1).Value
 x1 = rngY.Cells(iRow, 1).Offset(RowOffset:=-1).Value
 x = rngY.Cells(iRow, 1).Value

 rngY.Cells(iRow, iCol) = y1 + (y2 - y1) * (x - x1) / (x2 - x1)

 End If
 Next iRow
 Next iCol


 End Sub
...