Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


45790 / 76732 ←次へ | 前へ→

【35928】パラメータがバラバラの場合を教えてくだ...
質問  うさちゃん  - 06/3/16(木) 9:20 -

引用なし
パスワード
   皆さん、こんにちは。

ichinoseさんのご回答の中で2つ質問があるので、教えてください。

1.例では、3つのセルとも1〜20の値とさせていただきましたが、
これが、A1は1〜5、B1は11〜20、C1は51〜75、
のように、バラバラの場合は、どのように記述すればよいのですか?

2.例えば、1〜200のような場合でも、
(1, 2, 3, 4, 5, 6、...中略...197, 198, 199, 200)と記述することになるのですか?

以上2点、よろしくお願いいたします。


>うさちゃん さん,ちくたくさん、こんばんは。
>つまり、総当たりリストが作成できればよいと言うことですね?
>
>>ちょっと図にしてみました。
>>
>>下のように、A1、B1、C1のセルに、
>>例えば、1〜20まで順次入力していって、
>>E1、F1のセルに答えが返るとします。
>>これを手作業でやっていくと、
>>A1、B1、C1を変えるだけで8000回かかります。
>>この入力をVBAに任せて、出てきた答えを例えばHとIの列に、
>>上から列記されたように表示させたいのです。
>>実際にマクロを実行したら、HとIの列に8000行のデータが現れて、
>>終了するようになると思います。
>>
>>
>>A1 B1 C1 → E1 F1
>> 1 1 1 → 2 3
>> 1 1 2 → 5 7
>> 1 1 3 → 8 7
>> . . .   . .
>> . . .   . .
>> . . .   . .
>>20 20 18 → 5 0
>>20 20 19 → 9 1
>>20 20 20 → 6 4
>
>この例を引用すると
>
>標準モジュールに
>
>'=====================================================
>Sub main()
>  Dim idx As Long
>  Dim ans(1 To 3)
>'  ↑総当たりメンバーを取得する配列
>  Dim ss As Variant
>  ss = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
>  Call init_totalhit(ss, 3)
>  idx = 1
>  Do While get_totalhit(ans()) = 0
>    Range("a1:c1").Value = ans()
>    Range(Cells(idx, "h"), Cells(idx, "i")).Value = Range("e1:f1").Value
>    idx = idx + 1
>    Loop
>   
>  Call term_totalhit
>
>End Sub
>
>
>別の標準モジュールに
>'=============================================================
>  Private c_myarray()
>  Private c_idx() As Long
>
>'===================================================================
>Function init_totalhit(標本 As Variant, 抜取り数 As Long) As Double
>'総当たりデータをセットする
>'input : 標本 総当たりリストを作成する標本配列
>'   : 抜取り数
>'Output: init_totalhit 総あたり数
>  Dim g0 As Long
>  Erase c_myarray
>  Erase c_idx
>  ReDim c_myarray(1 To UBound(標本) - LBound(標本) + 1)
>  For g0 = LBound(標本) To UBound(標本)
>   c_myarray(IIf(LBound(標本) = 0, g0 + 1, g0)) = 標本(g0)
>   Next g0
>  init_totalhit = (UBound(標本) - LBound(標本) + 1) ^ 抜取り数
>  ReDim c_idx(1 To 抜取り数)
>  For idx = LBound(c_idx()) To UBound(c_idx())
>    c_idx(idx) = 1
>    Next
>  c_idx(UBound(c_idx())) = 0
>  
>End Function
>'======================================================================
>Sub term_totalhit()
>'総当たり処理の終了処理
>  Erase c_myarray()
>  Erase c_idx()
>End Sub
>'======================================================================
>Function get_totalhit(ans()) As Long
>'総当たりメンバーを配列に出力する
>'output: ans() メンバの配列 添え字は必ず1から始まる配列を用意する
>'    get_totalhit:0 -- 正常に配列取得
>'            1 -- メンバの終わり
>  get_totalhit = 1
>  For i = UBound(c_idx()) To LBound(c_idx()) Step -1
>    If c_idx(i) + 1 <= UBound(c_myarray(), 1) Then
>     c_idx(i) = c_idx(i) + 1
>     get_totalhit = 0
>     Exit For
>    Else
>     c_idx(i) = 1
>     End If
>    Next
>  If get_totalhit = 0 Then
>    For i = LBound(c_idx()) To UBound(c_idx())
>     ans(i) = c_myarray(c_idx(i))
>     Next
>    End If
>End Function
>
>として、当該シートをアクティブにして
>実行してみて下さい。
>
>総当たりのリストによるセルE1、F1の結果が
>H列、i列に順次移行されます。
>
>総当たりリストは、例ではA1,B1,C1の抜取り3つですが、
>4つになっても簡単に移行出来るようにしておきました。
>試してみて下さい

3 hits

【35881】任意に数字を入れて結果を求めるVBAを教えてください うさちゃん 06/3/15(水) 12:11 質問
【35884】Re:任意に数字を入れて結果を求めるVBA... ちくたく 06/3/15(水) 13:58 回答
【35888】Re:任意に数字を入れて結果を求めるVB... うさちゃん 06/3/15(水) 14:57 質問
【35893】Re:任意に数字を入れて結果を求めるVB... ちくたく 06/3/15(水) 16:02 回答
【35895】Re:任意に数字を入れて結果を求めるVB... うさちゃん 06/3/15(水) 16:37 質問
【35907】Re:任意に数字を入れて結果を求めるVB... ちくたく 06/3/15(水) 18:35 発言
【35914】Re:任意に数字を入れて結果を求めるVB... うさちゃん 06/3/15(水) 21:35 質問
【35915】Re:任意に数字を入れて結果を求めるVB... やっちん 06/3/15(水) 22:15 発言
【35921】Re:任意に数字を入れて結果を求めるVB... やっちん 06/3/16(木) 0:39 発言
【35916】Re:任意に数字を入れて結果を求めるVB... ichinose 06/3/15(水) 22:17 発言
【35920】皆さん、どうもありがとうございました。 うさちゃん 06/3/16(木) 0:27 お礼
【35928】パラメータがバラバラの場合を教えてくだ... うさちゃん 06/3/16(木) 9:20 質問
【35964】Re:パラメータがバラバラの場合を教えてく... ichinose 06/3/16(木) 22:05 発言
【35979】Re:パラメータがバラバラの場合を教えてく... ちくたく 06/3/16(木) 23:48 発言
【35983】Re:パラメータがバラバラの場合を教えて... うさちゃん 06/3/17(金) 1:52 お礼
【35982】Re:パラメータがバラバラの場合を教えて... うさちゃん 06/3/17(金) 1:49 お礼

45790 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free