|
皆さん 今晩は。
質問とは別だけど、またやってみたので、分りやすかったら参考にしてください。
並びの重みを整理するのに下記の表で考えてみました。それで、
(○)(△)は×でなく表のようになるのではないかと勝手に推測して作ってみました。
後に出る数字
0 1 2 3
先 0 × ○ ○ (○)
に 1 △ × ○ ○
出 2 △ △ × (○)
る 3 (△) △ (△) ×
数
字
'入力 : rng --->調査するセル範囲
'出力 : f_compare--->○,△,×
'記述例 : =f_compare(a1:c1)
Function f_compare(rng As Range) As Variant
Dim i As Integer, j As Integer
Dim x(1 To 3) As Variant
x(1) = rng.Cells(1).Value
x(2) = rng.Cells(2).Value
x(3) = rng.Cells(3).Value
f_compare = "×"
For i = 1 To 2
For j = i + 1 To 3
If x(i) = 0 And (x(j) = 1 Or x(j) = 2 Or x(j) = 3) Then
f_compare = "○": Exit Function
ElseIf x(i) = 1 And (x(j) = 2 Or x(j) = 3) Then
f_compare = "○": Exit Function
ElseIf x(i) = 2 And x(j) = 3 Then
f_compare = "○": Exit Function
'----------------------------------
ElseIf x(i) = 1 And x(j) = 0 Then
f_compare = "△": Exit Function
ElseIf x(i) = 2 And (x(j) = 0 Or x(j) = 1) Then
f_compare = "△": Exit Function
ElseIf x(i) = 3 And (x(j) = 0 Or x(j) = 1 Or x(j) = 2) Then
f_compare = "△": Exit Function
End If
Next j
Next i
End Function
以下、やってみて一つ勉強になりました。
dim vnt
vnt=rng.Value
がユーザー関数の中で使えなくて苦労しました。
で、ichinoseさんのコードを見て
x(1) = rng.Cells(1).Value
を使うのを勉強させてもらいました。ひとつラッキーでした。
|
|