3歩歩くと忘れるぶろぐ

ついに大学生から社会人になってしまった、地理系・情報系大学生だった人のぶろぐ。えんじにあえんじにあ。

VBA-if文とselect文の条件分岐

いやなんというかなんでなのか理解できず…

 

例えば

適当な分ける基準を

score(3)as doubleで宣言しといてその中に

0.463287
1.254333
2.04538
2.836427

みたいな値を格納して

 

任意のセルcells(i,j)と比較して、分けた結果の値1,2,3,4,5(=score(3)以上)を隣の列に付与したい場合に


x = Cells(i, col)
Select Case x
 Case Is < score(0)
  Cells(i, 13) = 1
 Case Is < score(1)
  Cells(i, 13) = 2
 Case Is < score(2)
  Cells(i, 13) = 3
 Case Is < score(3)
  Cells(i, 13) = 4
 Case Else
  Cells(i, 13) = 5
End Select

みたいに書くか

 

 

If (Cells(i, col) < score(0)) Then
  Cells(i, 12) = 1
ElseIf (Cells(i, col) < score(1)) Then
  Cells(i, 12) = 2
ElseIf (Cells(i, col) < score(2)) Then
  Cells(i, 12) = 3
ElseIf (Cells(i, col) < score(3)) Then
  Cells(i, 12) = 4
Else
  Cells(i, 12) = 5
End If 

 

と書けば同じ結果が出力されるはずで

 

で、まあ、普通に考えて、if文いっぱいはアレなのでSELECT文書いてたんだけど

 

どうも出力結果が変で

1
0
1
1
3

という列を投げると、

2
1
2
2
5

が返ってくるはずなのに

SELECT文だと

3
2
3
3
5

が返ってきて、if文だと上の正解のが返ってくるという謎な状態になっており

 

原因がわからない…

(ので今のところ全部if文に変えて行っているところで…だれか分かれば教えていただきたい…)