• 締切済み

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

  • エクセルで複数セル(約50個のセル)を参照し、合計値を出そうと思ってい

    エクセルで複数セル(約50個のセル)を参照し、合計値を出そうと思っています。 複数セルの中にはエラー値#N/Aも含まれています。 参照元のセルにVLOOKUP関数を埋め込むのも数が多く大変ですし、 合計値セルでISERROR関数を埋め込んだら「数式が長すぎます」というエラーが出ます。 #N/A以外を抽出し、合計値を出す方法はありますでしょうか。 出来ればVBAを使用せず回避できる方法を教えて頂ければ幸いです。

  • エクセルで数値のセルだけ合計する方法

    エクセル2000を使っております。 一列のセルの中で、\10,000のように金額が入力されたセルだけ合計する方法を教えてください。 データはこんな状態です。(A列のみ使用、¥は半角で入力) A1 あああああああ A2 \10,000 A3 (空白) A4 いいいいいいい A5 \20,000 A6 (空白) A7 ううううううう A8 \30,000 この合計、\60,000を返して欲しいです。 上記のようなデータはテキストデータから貼付けのため、「¥」や「,」は半角で入力された状態です。 また、行数は変化しますので、合計は別の列(B1やC1)に返すのが理想です。 また、金額には「-\20,000」のように負の値もあります。 以上です。 よろしくお願いします。

  • Excelの複数条件の合計

    Excel2010で、複数条件で合計を出したいのですが、例えば、 A|B|C 2001|1|125 2001|1|100 2001|2|95 2001|2|75 2001|2|50 2001|3|105 2001|3|125 2001|3|100 このような数列の場合、A列の「2001」とB列の「1」と条件が合うC列の値の合計を求めるというものです。 回答よろしくお願いします。

  • エクセル 複数のセルの文字を1つにまとめる

    エクセルで教えて下さい A列の複数セルのデータを、B列に連結して表示する方法を教えて下さい。 ただし連結するセルの数はランダムです。 A列のデータが【¥】で始まるセルから、次の【¥】が始まるまでのセルを連結します。

  • Excel 1セル中の複数データの個別合計

    次のように、A1には「1;3」、A2には「3;4」、A3には「1;3;4」と入力された表があります。      A列 1行目  1;3 2行目  3;4 3行目  1;3;4 アンケートでAの項目に対して1~4の回答選択肢があり、複数回答可となっていたものを、集計の際に選択肢毎に別々の列を設けず、同一の項目Aのセルに複数の回答番号を「;」で区切って入れてしまったものです。 このような表で、例えばAの5以下のセルに、選択肢1の回答数合計、選択肢2の回答数合計、選択肢3の回答数合計・・・といった合計を出す方法はあるでしょうか。A-1~A-4といった列を作って個別に回答数を入れるのが常識であることは分かっているのですが、上のような場合でもそれぞれの選択肢の回答合計を出せる関数の使い方があれば、どうぞご教示ください。

  • 複数のデータの内、0以上の値のセル1/4個分の合計

    やりたいことは、複数のデータの内、0以上の値を示すいくつかのセルの、その1/4個分のセルの合計を出すことです。 図で具体的に説明します。 A列に37個のデータがあります。 このうち、値が0以上のセルは、A7からA27までの21個です。 このうち、上1/4個分のセルの合計を出したいです。 計算するセルは、5.25個(セル21個/4)のセルなので、 A列の場合は、 A7+A8+A9+A10+A11+(A12*0.25) で計算することになります。 ただ、A列だけですといいのですが、 実際には、72列あります(添付の図は、そのうちの3列分です)。 また、それぞれの列で、値が0以上のセルは、それぞれ異なります。 なにか、良い方法はないでしょうか? 教えてください。 よろしくお願いします。

  • エクセルで条件指定した行の合計値の出しかた

    A列 B列 C列 100  1   1 200  2   2 300  3   3 400  4   4 500  4   5 600  2   2 700  3   1 800  4   4 下記の条件にあてはまる行のA列の合計値をそれぞれ出したい。 ・B列が2以上、C列が2以下である。 ・B列が2以上、C列が3以上5以下である。 上記のデータ例が不定期にブロック分けされていて、オートフィルタが使いずらい状況です。 各合計値を出力するセルを指定して、関数等で処理する方法があったら、教えて下さい。

  • エクセルでの混合演算の合計の出し方は・・・?

    同一列の複数セルの足し算と複数セルの引き算の合計を出したいのですがセルをひとつづつ指定して+や-を入力しないといけないのでしょうか? 簡単にできる方法はないでしょうか?

  • excelで、1つのセルに入っている複数の数字を合計するには?

    Excel(2002以降)で、たとえば  セルA1に 33,2,55,764  セルA2に 654,654,8,165,46 のように、カンマ区切りで数字が入っていて、 その数字の合計をB列に表示させるということは可能でしょうか? 試算用にB列・C列などを使い、結果をD列、などという方法でも大丈夫ですが、数字がいくつに分けられるかはわからない(極端な話100個や200個の可能性もある)ので、その分のセルを確保するのは無理です。 数字はいくつ入っているかはセルごとに違い、何も入っていない場合や1つしかない場合もあります。 カンマを+に置換して計算させるような関数があればできそうだと思ったのですが、ヘルプでは探しだせませんでした。 なにかいい方法があればお願いします。

  • Excelの同一列中の任意の多数のセルの数値の合計を求めたい

    こんにちは 例えばA1からA500のセルの内の任意の80個のセルにある数値の合計を簡単に求める方法(関数?)はありませんか? (80個のセルの指定は手動で行う) よろしくお願いします。

専門家に質問してみよう