Как написать код VBA для таблицы

#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 ).