|
▼ichinose さん、ありがとうございます。
>>1〜18までのデータがありまして、番号がユニークにB11〜B28まで
>>入っています。この5位まで、すなわちB11〜B15のデータを、
>>参照表を使って判定表を作りたいのです。
>>
>> A B C
>>1 2or17 9or10 4or15
>>2 7or12 5or14 3or16
>>3 6or13 1or18 8or11
>
>↑この参照表が評価するのが難しいデータですが、
>このままでいきましょう。
>(A1〜C3が参照表だとします)
>>
>>上記の表を参照して、
>>データ例(1)
>> A B C
>>11 2
>>12 12
>>13 14
>>14 4
>>15 9
>>16
>>・
>>・
>>・
>上記のようにB11〜B15にある場合、
>
>
>>32 1. 5. 4.
>>33 2. 3.
>>34
>
>↑この結果をセルA32〜C34に表示するには、
>
>
>標準モジュールに
>
>'==========================================================
>Sub main()
> Dim rng As Range
> For Each rng In Range("a32:c34")
> With rng
> .Formula = "=CHOOSE(SUMPRODUCT(ISERROR(MATCH({" & _
> Replace(.Offset(-31, 0).Value, "or", ",") & _
> "},B11:B15,0))*1)+1,""◎""" & _
> ",SUMPRODUCT(IF(ISERROR(MATCH({" & _
> Replace(.Offset(-31, 0).Value, "or", ",") & _
> "},B11:B15,0)),0,MATCH({" & _
> Replace(.Offset(-31, 0).Value, "or", ",") & _
> "},B11:B15,0))),"""")"
> .Value = .Value
> End With
> Next
>End Sub
>
>mainを実行してみてください。
>
>データ例(2)の場合も確認してみて下さい。
ありがとうございます。
こんなに、早く返信があるとは思いませんでした。
コードをだらだら書かなくてはいけないと思っていたのですが、
やはり、このケースはOffsetを使うのですね。自分はまだ理解に至っていませんが。
エラーがでました。'1004'のエラーで
データ例(1)はB32が「0」
データ例(2)はB32〜C34が「0」で中断しました。
また、他のデータでテストしてみましたら、
◎が3カ所と「0」が入力された表になってしまいました。
エクセルは2000です。
当方は、まだスキルがないのでどこがいけないか、理解できていません。
ちなみに、エラーの範囲は、
>.Formula = "=CHOOSE(SUMPRODUCT(ISERROR(MATCH({" & _
> Replace(.Offset(-31, 0).Value, "or", ",") & _
> "},B11:B15,0))*1)+1,""◎""" & _
> ",SUMPRODUCT(IF(ISERROR(MATCH({" & _
> Replace(.Offset(-31, 0).Value, "or", ",") & _
> "},B11:B15,0)),0,MATCH({" & _
> Replace(.Offset(-31, 0).Value, "or", ",") & _
> "},B11:B15,0))),"""")"
> .Value = .Value
でした。
すみません。よろしくお願いします。
|
|