Excel VBA質問箱 IV

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

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


75030 / 76738 ←次へ | 前へ→

【6157】Re:複数の数値の合計が指定した数になるよ...
発言  LC  - 03/6/17(火) 23:08 -

引用なし
パスワード
   ▼よしこ さん:

こんばんわ。
かなーりファットでよろしくないんですけど、作ってみました。
とりあえず、こんな感じはどうかな?ってのをアップします。
よくないところとか、他に希望などありましたら言ってください。

条件)
データはA1〜ずらーっとあること
合計値(例の場合50)がC1に入力されていること
H列とZ列には何も入力されていないこと

結果は?)
マクロを実行すると、H列に文字列が表示されます。(とりあえずです)
※データの個数は2つの合計か3つの合計しかできません。。(とりあえず。。)

マクロ)
以下のコードを標準モジュールに記述して、対象のシートをアクティブにし、
マクロ(合計を合わせる)を実行する。

Dim a As Integer, k As Integer
Private Sub ランダム合計2個()

  Dim b As Integer, c As Integer, d As Integer, e As Integer
  Dim f As Integer, g As Integer, h As Integer
  

  'A列の最終行を取得
  a = Range("A65536").End(xlUp).Row
  '合計値を格納
  h = Range("C1")
  
  '合計値になるまで繰り返す。"k"回繰り返し合計値にならなかったら抜ける
  Do Until g = h Or k = a * 50
  
    'Z4に数値が入力されるまで繰り返す
    Do
      'ランダムな整数値を格納
      b = Int(a * Rnd) + 1
      'C列の最終行を取得
      c = Range("Z65536").End(xlUp).Row
      
      '同じ数値がないか検索------------------------
      With Range("Z2:Z3")
        Set Rng = .Find(What:=b, MatchCase:=False)
      End With
      If Rng Is Nothing Then Range("Z" & c + 1) = b
      '-------------------------------------------
      
    Loop Until Range("Z3") <> ""
  
    d = Range("Z2")
    e = Range("Z3")
    
    g = Range("A" & d) + Range("A" & e)
    
    Range("H1") = d & "行目の" & Range("A" & d)
    Range("H2") = e & "行目の" & Range("A" & e)
    
    Range("Z2").Clear
    Range("Z3").Clear
 
    k = k + 1
    
  Loop


End Sub
Private Sub ランダム合計3個()

  Dim b As Integer, c As Integer, d As Integer, e As Integer
  Dim f As Integer, g As Integer, h As Integer
  

  '合計値を格納
  h = Range("C1")
  
  '合計値になるまで繰り返す。"k"回繰り返し合計値にならなかったら抜ける
  Do Until g = h Or k = a * 50
  
    'Z4に数値が入力されるまで繰り返す
    Do
      'ランダムな整数値を格納
      b = Int(a * Rnd) + 1
      'C列の最終行を取得
      c = Range("Z65536").End(xlUp).Row
      
      '同じ数値がないか検索------------------------
      With Range("Z2:Z4")
        Set Rng = .Find(What:=b, MatchCase:=False)
      End With
      If Rng Is Nothing Then Range("Z" & c + 1) = b
      '-------------------------------------------
      
    Loop Until Range("Z4") <> ""
  
    d = Range("Z2")
    e = Range("Z3")
    f = Range("Z4")
    
    g = Range("A" & d) + Range("A" & e) + Range("A" & f)
    
    Range("H1") = d & "行目の" & Range("A" & d)
    Range("H2") = e & "行目の" & Range("A" & e)
    Range("H3") = f & "行目の" & Range("A" & f)
    
    Range("Z2").Clear
    Range("Z3").Clear
    Range("Z4").Clear
    
    k = k + 1
    
  Loop
  
End Sub
Sub 合計を合わせるマクロ()

  Columns("H:H").Clear
  Columns("Z:Z").Clear

  Call ランダム合計2個
  If k = a * 50 Then
    k = 0
    Call ランダム合計3個
  End If
  
  If k = a * 50 Then
    MsgBox "合計値になりません。。"
    Columns("H:H").Clear
  End If
  
  k = 0
    
End Sub

0 hits

【6113】複数の数値の合計が指定した数になるようにしたいのですが・・・ よしこ 03/6/16(月) 22:03 質問
【6151】Re:複数の数値の合計が指定した数になるよう... LC 03/6/17(火) 18:19 質問
【6153】Re:複数の数値の合計が指定した数になるよ... よしこ 03/6/17(火) 20:39 質問
【6157】Re:複数の数値の合計が指定した数になるよ... LC 03/6/17(火) 23:08 発言
【6159】Re:複数の数値の合計が指定した数になるよ... よしこ 03/6/18(水) 0:46 お礼
【6161】Re:複数の数値の合計が指定した数になるよ... LC 03/6/18(水) 6:24 質問
【6179】Re:複数の数値の合計が指定した数になるよ... LC 03/6/18(水) 12:30 回答
【6182】Re:複数の数値の合計が指定した数になるよ... ichinose 03/6/18(水) 12:45 発言
【6192】Re:複数の数値の合計が指定した数になるよ... よしこ 03/6/18(水) 21:52 お礼

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