关于范围内数据的VBA

时间:2014-06-13 20:52:03

标签: excel-vba vba excel

我是VBA的新手,我坚持这个问题。我有一个关于温度的大数据:

    A
1.  21.40
2.  21.45
3.  21.38
4.  22.89
5.  23.27
etc... 

我将数据放在A列中,对于每个温度,我想在B列中分配它们的密度和热系数值(相应于温度)。我试过这个:

Dim Temp As Range, Density As Double

Set Temp = Range(“A1:A1000″)    
Temp = Range(“A1:A1000″).Value

If Temp = 21 Then    
    Density = 998.08    
ElseIf Temp=22 Then    
    Density = 997.86    
ElseIf…(I do until the required Temp)

End If

Range(“B1:B1000″).Value = Density

我收到了不匹配错误。你能帮我吗?

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,但我建议你将代码更改为:

Sub Temperature()
    Dim Temp As Range
    Dim Density As Double

    Set Temp = ActiveSheet.Range("A1:A1000")

    For Each cell In Temp
        Select Case cell.Value
            Case 20 To 21: Density = 998.08
            Case 21 To 22: Density = 997.86
            '...and so on with the cases
            Case Else: Density = 0
        End Select
        cell.Offset(0, 1).Value = Density '<~~ Writes the density in column B
    Next cell
End Sub

这将查看范围A1:A1000的每个单元格中的每个值,然后确定关联值的密度应该是什么(基于代码中的输入)。它此后将此值写入列B中具有相同行号的单元格,然后继续到下一个单元格。

我不是温度和密度的专家,但在我看来,你需要根据温度间隔分配密度。这就是我将Select Case基于温度区间的原因。