写一个VBA宏,代码如下,运行doubleSum这个宏就可以了
'vijDataArr: vij数据区域
Sub DoubleSum()
'' let vijDataArea=Range("B2:E7")
Dim vijDataArea, resultArea
On Error GoTo handler
Set vijDataArea = Application.InputBox("请选择vij数据区域", "输入框", , , , , , 8)
Set resultArea = Application.InputBox("请选择结果输出区域(也就是Z的区域)", "输入框", , , , , , 8)
On Error GoTo 0
VijDataArr = vijDataArea.Value2
HLength = resultArea.Rows.Count
VLength = resultArea.Columns.Count
' 获取温度T数组
tArr = resultArea.Cells(1, 1).Offset(0, -1).Resize(VLength, 1).Value2
'' 获取压力P数组
pArr = resultArea.Cells(1, 1).Offset(-1, 0).Resize(1, HLength).Value2
' 结果数组
Dim resultArr
ReDim resultArr(1 To VLength, 1 To HLength)
For r = 1 To VLength
For c = 1 To HLength
result = (Z(VijDataArr, pArr(1, c), tArr(r, 1)))
If TypeName(result) = "Double" Then
resultArr(r, c) = CStr(result)
Else
resultArr(r, c) = "#DIV/0!"
End If
Next c
Next r
resultArea.Value2 = resultArr
Exit Sub
handler:
MsgBox "取消选择"
End Sub
Function Z(VijDataArr, p, T)
Dim aResult As Double
aResult = 0
For i = 1 To UBound(VijDataArr, 1)
For j = 1 To UBound(VijDataArr, 2)
If T <> 0 Then
aResult = aResult + VijDataArr(i, j) * (p ^ i) * (100 / T) ^ j
Else
Z = "#DIV/0!"
Exit Function
End If
Next j
Next i
Z = aResult
End Function
---------跟我一起学习JSA编程吧-------
'vijDataArr: vij数据区域
Sub DoubleSum()
'' let vijDataArea=Range("B2:E7")
Dim vijDataArea, resultArea
On Error GoTo handler
Set vijDataArea = Application.InputBox("请选择vij数据区域", "输入框", , , , , , 8)
Set resultArea = Application.InputBox("请选择结果输出区域(也就是Z的区域)", "输入框", , , , , , 8)
On Error GoTo 0
VijDataArr = vijDataArea.Value2
HLength = resultArea.Rows.Count
VLength = resultArea.Columns.Count
' 获取温度T数组
tArr = resultArea.Cells(1, 1).Offset(0, -1).Resize(VLength, 1).Value2
'' 获取压力P数组
pArr = resultArea.Cells(1, 1).Offset(-1, 0).Resize(1, HLength).Value2
' 结果数组
Dim resultArr
ReDim resultArr(1 To VLength, 1 To HLength)
For r = 1 To VLength
For c = 1 To HLength
result = (Z(VijDataArr, pArr(1, c), tArr(r, 1)))
If TypeName(result) = "Double" Then
resultArr(r, c) = CStr(result)
Else
resultArr(r, c) = "#DIV/0!"
End If
Next c
Next r
resultArea.Value2 = resultArr
Exit Sub
handler:
MsgBox "取消选择"
End Sub
Function Z(VijDataArr, p, T)
Dim aResult As Double
aResult = 0
For i = 1 To UBound(VijDataArr, 1)
For j = 1 To UBound(VijDataArr, 2)
If T <> 0 Then
aResult = aResult + VijDataArr(i, j) * (p ^ i) * (100 / T) ^ j
Else
Z = "#DIV/0!"
Exit Function
End If
Next j
Next i
Z = aResult
End Function
---------跟我一起学习JSA编程吧-------