• 締切済み

EXCEL - 合計を指定してそれに合うように複数のセルを選択する方法(再送)

説明が少し難しいのですが、Excelを使って任意の数列の中から条件を決めた上で指定した合計の数に合うように処理するにはどうすれば良いですか? 具体的に言いますと、A列にランダムにある金額が並んでいるとします。 A 1,230 1,060 4,500 3,680 2,830 ・・・ それで、例えばこれらの金額の中から自動的に3つを選んで、その合計が5,000になるように処理したいのですが、どのようにすればいいでしょうか? つまり別のセルで合計金額を指定すれば任意にその合計に合うように複数のセルが選択される方法が知りたいです。 説明不足かもしれませんが、なんとかできる方法を知りたいです。 どうぞ宜しくお願いします。

みんなの回答

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

VBAというものを使います (1) Excelを起動する (2) ツール(T)-マクロ(M)-Visual Basic Editor(V)をクリックする Mircosoft Visual Basic というタイトルのウィンドウが起動します (3) 挿入(I)-標準モジュール(M)をクリックする (General) とか (Declarations)とか書いている下に広い枠が出現します (4) OKWebの回答のDim X As ~ End Subまでを反転させコピーし、この枠にはりつけます (5) このウィンドウでの作業は終わりましたので右上の×でとじてください (6) Excelにもどります ここまでは準備です。ここからが実際の計算になります (7) A1~A5に1230, 3242, … B1に目的値である5000 B2に足し合わせる数の3を設定する (8) ツール(T)-マクロ(M)-マクロ(M)をクリック (9) マクロ名の一覧からfooを選択し、実行ボタンをおす という手順ですよ~

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.1

A1:A5に金額 B1に 5000 B2に 3 をセットして FOOを呼び出すと該当セルが選択されます あ金額は正数でしょうか?このプログラムでは負数を含む解答はみつけることができない場合があります... Dim X As Currency '目標値 Dim a() As Currency '組み合わせる値を格納 Dim na As Integer 'a()の要素数 Dim Hanni As String Dim MaxUse As Integer '足し合わせる要素の数 Sub foo() Dim isUse() As Boolean Dim c As Object Hanni = "A1:A5" X = Range("B1") '合計値 MaxUse = Range("B2") na = -1 For Each c In Range(Hanni) na = na + 1 ReDim Preserve a(na + 1) a(na) = c.Value Next ReDim Preserve isUse(na + 1) Call bar(0, isUse(), 0, 0) End Sub Sub bar(lv As Integer, isUse() As Boolean, sm As Currency, nUse As Integer) Dim j As Integer If (sm > X Or nUse > MaxUse) Then Exit Sub If (sm = X And nUse = MaxUse) Then For j = lv To na isUse(j) = False Next Cnt = 0 For j = 0 To na If isUse(j) Then If (Cnt = 0) Then Range(Hanni).Item(j + 1).Select Else Union(Range(Hanni).Item(j + 1), Selection).Select End If Cnt = Cnt + 1 End If Next End 'おしまい End If If lv > na Then Exit Sub isUse(lv) = True Call bar(lv + 1, isUse(), sm + a(lv), nUse + 1) 'a(lv)を使う場合 isUse(lv) = False Call bar(lv + 1, isUse(), sm, nUse) 'a(lv)を使わない場合 End Sub

heonhang76
質問者

お礼

ご回答ありがとうございます。 ところで、基本的なことですが、教えていただいたプログラムを実際にエクセルに適用するにはどうすればいいですか? 全くの初心者ですので、お教えいただけますと幸いです。 エクセルでどうやるか全くわかりません。

関連するQ&A