Excelselect个案types不匹配错误

我正在Excel 2013中处理简单的Select Case。我希望列R中的值基于列Q中的值。但是,我得到一个types不匹配错误。 这是一个简短版本的案例,因为实际上有20个,但是这里是我用来testing的(下面提供了types不匹配错误):

Sub laranges() Select Case Range("Q:Q").Value Case 0 To 0.49 Range("R:R").Value= "Low" Case 0.5 To 0.99 Range("R:R").Value= "Medium" Case Else Range("R:R").Value = "High" End Select 

结束小组

下面的工作,如果我改变它只select一个单元格(我已经testing了几个单元格,他们都是单独成功):

 Sub laranges() Select Case Range("Q2").Value Case 0 To 0.49 Range("R2").Value = "Low" Case 0.5 To 0.99 Range("R2").Value = "Medium" Case Else Range("R2").Value = "High" End Select 

结束小组

显然,我没有正确引用范围。 我也尝试将范围更改为Q2:Q3和R2:R3,但是我得到相同的错误。 但是如果我单独参考Q2和Q3,他们会成功运行。

我怎样才能正确引用范围? 我已经看过Ozgrid , MSDN ,以及几个线程,但我只是没有成功。

你需要迭代的范围

 Sub laranges() Dim sResult As String For Each oCell In Range("Q:Q") Select oCell.Value Case 0 To 0.49 sResult = "Low" Case 0.5 To 0.99 sResult = "Medium" Case Else sResult = "High" End Select oCell.Offset(0, 1).Value = sResult Next oCell 

将这种types的逻辑放在s / s本身中会更有效率。

你可以试试这个“公式”的方法

 Sub main() ' for "Choose" function clever use, see tobriand's answer in http://stackoverflow.com/questions/5488692/case-function-equivalent-in-excel With ActiveSheet.Range("Q:Q").SpecialCells(xlCellTypeConstants, xlNumbers).Offset(, 1) .FormulaR1C1 = "=CHOOSE( 1 + LOG(1 + (2*AND(RC[-1]>=0,RC[-1]<=0.49) ) + (4*AND(RC[-1]>=0.5,RC[-1]<=0.99)) ,2)," _ & " ""High"" , ""Low"", ""Medium"")" .Value = .Value End With End Sub