#vba #excel
#vba #excel
Вопрос:
(T,P) 300 310 320 330 340 350 F
3400 1 1 1 1 1 1
3300 1 1 1 1 1 1
3200 1 1 0.95 0.95 0.95 0.9
3100 1 0.95 0.9 0.85 0.85 0.8
3000 0.95 0.9 0.85 0.82 0.81 0.8
2900 0.9 0.85 0.8 0.8 0.75 0.73
2800 0.85 0.8 0.75 0.73 0.72 0.7
psia
В настоящее время у меня есть эта таблица. Цель состоит в том, чтобы ввести температуру (например, 320 F), затем выполнить поиск по 1-му изменению фракции жидкости от 1 до 0,95 и использовать метод деления пополам, чтобы узнать давление. Ниже приведен мой код. Они не работают. Мне действительно нужно, чтобы кто-то исправил это за меня. Большое спасибо!
Sub Linear()
Dim aksheet As Worksheet
Set aksheet = ThisWorkbook.Sheets("Sheet1")
Dim i As Integer
Dim LastRow As Long
Dim LastCol As Long
Dim c As Long
Dim Tin As Double
Dim Pout As Double
With aksheet
LastRow = aksheet.Range("A9").End(xlUp).Row
LastCol = aksheet.Range("H1").End(xlToLeft).Column
'input temperature
Tin = aksheet.Range("B25").Value
itemp = 0
For i = 1 To LastCol - 1
T(i) = Cells(1, i 1).Value
Next
If Tin - T(6) > 0 Then
MsgBox ("Input temperature is too high")
ElseIf Tin - T(1) < 0 Then
MsgBox ("Input Temperature is too low")
End If
FirstRow = 1
For c = FirstRow To LastRow
If Tin = T(i) And .Cells(c, i).Value < 1 Then
interp = (0.99, .Cells (c,i),.Cells(c 1,i),.Cells(c,1),.Cells(c 1,1))
End If
Next c
End With
Range("B30").Value = Pb
End Sub
Function interp(Xin, T1, T2, P1, P2) As Double
interp = P1 (P2 - P1) * (Tin - T1) / (T2 - T1)
End Function
Комментарии:
1. Это не VB.NET код
2. Что именно здесь не работает? Какое сообщение об ошибке вы получаете? Похоже, вы не инициализировали массив
T
. ДобавлениеDim T() As Variant
иReDim T(1 To LastCol - 1)
может решить вашу проблему.3. На самом деле я понятия не имею после завершения первого EndIf. Мне нужны некоторые подсказки, как написать кодировку. Моя цель — использовать функцию interp, чтобы найти соответствующее давление. Например, при 320 F, когда фракция жидкости изменяется от 1 до 0,95, связаны два давления 3300 и 3200 фунтов на квадратный дюйм. Я хочу включить эти два давления в уравнение и узнать соответствующее давление, если моя доля жидкости равна 0,99.
4. Макрос показывает, что «Sub или функция не определены». Я не знаю, что не так.
5. @tlin Другая проблема может заключаться в том, что в вашей функции есть неопределенная переменная
interp
,Tin
. Вам нужно будет определить его как глобальную переменную, переопределить его в функции или передать в качестве аргумента (если это не предполагаетсяXin
).