|
▼ヒロユキ さん:
おはようございます。
。
>
>エラーがでました。'1004'のエラーで
>データ例(1)はB32が「0」
>データ例(2)はB32〜C34が「0」で中断しました。
私が確認した限りでは両方とも正しい結果が表示されました。
こういう場合、私とヒロユキ さんが見ているシートが違う
ということが原因になっていると思います。
で、サンプルデータもマクロで作成します。
新規ブック(何も入力されていないブック)の標準モジュールに
'============================================================
Option Explicit
Sub サンプルデータも作成したmainのテスト()
With Range("a1:c3")
.FormulaArray = "={""2or17"",""9or10"",""4or15"";" & _
"""7or12"",""5or14"",""3or16"";" & _
"""6or13"",""1or18"",""8or11""}"
.Value = .Value
End With
With Range("b11:b15")
.Value = Application.Transpose(Array(2, 12, 14, 4, 9))
Range("a32:c34").ClearContents
MsgBox "ご覧のデータでmainを実行します"
Call main
MsgBox "例1 結果を確認してください"
.Value = Application.Transpose(Array(11, 5, 8, 18, 7))
Range("a32:c34").ClearContents
MsgBox "ご覧のデータでmainを実行します"
Call main
MsgBox "例2 結果を確認してください"
.Value = Application.Transpose(Array(17, 9, 3, 11, 16))
Range("a32:c34").ClearContents
MsgBox "ご覧のデータでmainを実行します"
Call main
MsgBox "例3 結果を確認してください"
End With
End Sub
'=====================================================================
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のテスト」を実行してみてください
3つの例で試しています。
mainというプログラムは、アクティブシートの
セルA1〜C3、B11〜B15を参照して計算した結果を
セルA32〜C34に出力しています。
mainは前回のコードと何ら変わっていません。
上記のコードが正しく作動しましたら、
ヒロユキ さんが試したデータと上記のコードで作成したサンプルデータの
違いを調べてみてください。
違いが分かれば、原因追求の手がかりになります。
試してみてください。
|
|