Привет Планетяне! Подскажите пожалуйста, как найти координаты точек пересечения на графике? В идеале, с помощью формул, но vba c поиском решений также подойдет. Облазил гугл, но не смог решить самостоятельно.
buchlotnik, Сергей, большое спасибо за участие. Прошу прощения за некорректный пример. Мне нужно найти точки на листе "было". Возможно, сможете помочь?
F2:F18 =B2>D2
G2:H2 =ЛИНЕЙН(D2:D3;A2:A3) формула массива, внесённая в диапазон G2:H2. Выделить две ячейки при внесении формулы.
Протянуть G2:H2 до G17:H17
I2:I17 =(B2-H2)/G2
J1 =ВПР(F2;F:I;4;-1) 'x пересечения со Значениями 1.
МатросНаЗебре, очень круто!!! Правильно ли я понимаю, что тем самым Вы нашли "х". Подскажите пожалуйста, как найти "у", если значения 1 и 2 будут не одинаковыми?
Думаю, что нужно перенести тему в платный раздел, т.к. далее мне нужно найти еще несколько точек и судя по всему, я самостоятельно не справлюсь. Бюджет скромный 500 рублей.
МатросНаЗебре, к сожалению в конце ставится 1,22, а это некорректно + данные иногда записываются через разное количество строк. Может быть можно не учитывать пустые без этого доп.столбца?
Function АПРОКС(x As Double, значения_y As Variant, значения_x As Variant) As Double
Dim arrY As Variant: arrY = значения_y
Dim arrX As Variant: arrX = значения_x
Dim y As Long
Dim i As Long
Dim j As Long
For y = 1 To UBound(arrY, 1)
If Not IsEmpty(arrY(y, 1)) Then
If x >= arrX(y, 1) Then
i = y
Else
Exit For
End If
End If
Next
For y = UBound(arrY, 1) To 1 Step -1
If Not IsEmpty(arrY(y, 1)) Then
If x <= arrX(y, 1) Then
j = y
Else
Exit For
End If
End If
Next
If i > 0 Then
If j = 0 Then
For y = i - 1 To 1 Step -1
If Not IsEmpty(arrY(y, 1)) Then
j = y
Exit For
End If
Next
End If
End If
If j > 0 Then
If i = 0 Then
For y = j + 1 To UBound(arrY, 1)
If Not IsEmpty(arrY(y, 1)) Then
i = y
Exit For
End If
Next
End If
End If
Dim d As Double
If i > 0 Then
If j > 0 Then
If i = j Then
d = arrY(i, 1)
Else
d = (arrY(j, 1) - arrY(i, 1)) / ((arrX(j, 1) - arrX(i, 1))) * (x - arrX(i, 1)) + arrY(i, 1)
End If
Else
Stop
End If
End If
АПРОКС = d
End Function
Функция возвращает значение на ломанной линии, построенной по заданным точкам. Работает и с пустыми значениями y.