• ベストアンサー
  • 困ってます

Excelで、数字の組み合わせの合計が一定数になるパターンの抽出

Excelで、数字の組み合わせの合計が一定数になるパターンの抽出 たとえば、つぎの配列があるとします。 A(5){10,20,30,40,50}要素数が5つ1..5、{}は内容 このなかで二つ以上の組み合わせで和が60になる組み合わせを出したいとします 答えは パタン1:1,2,3  /* 10+20+30 */ パタン2:1,5 /* 10+50 */ パタン3:2,4 /* 20+40 */ 同じような処理をExcelの関数では実現できますでしょうか? また上記のような組み合わせのパタンの総数を求める公式はありますか? 初歩的な高等数学で恐縮です。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数2804
  • ありがとう数21

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • mimeu
  • ベストアンサー率49% (39/79)

> 同じような処理をExcelの関数では実現できますでしょうか? VBA の既製の関数にはご質問のものはありません。 ただし、質問者さんご自身が Excel の VBA で その関数を作るのは簡単です。 リカージョンのお手本みたいなアルゴリズムでしょうね。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 >リカージョンのお手本みたいなアルゴリズムでしょうね。 ちょっと調べてみます。VBAも慣れていないのでてこずりそうです。。

関連するQ&A

  • パターン抽出

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9] b = [a, b, c, d] 上記みたいな配列があったとして1a, 1bみたいな組み合わせのすべてのパターンを取り出すアルゴリズムを考えています。 1配列内の数は不定、配列自体の数も不定という条件です。 たとえばここにc = [z, y, x]という配列が加わると 1az, 1ay, 1ax みたいな感じで抽出します。 ですが、あまりいい方法が浮かびません。再帰を使えばいいというのはわかるのですが数が不定というのが複雑でイメージがわきません。 いいパターン抽出のやりかたがあれば教えてください。 お願いします。

  • 合計が決まった数で、数の組み合わせを求めるには

     ちょっと数学的な問題を、パソコンで解きたいと思います。  合計が決まった数で、ある数の集まりの中からその和の組み合わせを求めたいのですが、何を使ってどのようにすればよいでしょうか。  ソフトは、Excel/Access/FileMakerがあります。  回答でなくても、自分ならこうやるよ、という意見も大歓迎です。  よろしくお願いします。 (例題) {2550,1210,90150,110223,17112,142816,87442,14650,1701413,11788,4460,24180}の中で総和が1949096になる数の組み合わせは?

  • Excelでの合計計算について

    初歩的な質問で申し訳ありません。 Excelでの数字の合計方法について教えてください。 Excelで以下の数を合計するとします。 10 10 -10 10 10 SUMで計算すると結果が「30」になるのですが、数学上間違いではないことは分かります。 ですが、うまく言えないのですが私が求める結果は「40」になってほしいのです。 合計からマイナスの値を引く?という方法になると思うのですが、これを実現する方法、または関数などを教えてください。 大変恐縮なのですが、大変な素人のため、多少詳しく教えていただけると幸甚です。

その他の回答 (1)

  • 回答No.1
  • layy
  • ベストアンサー率23% (292/1222)

補足をお願いします。 ここでは2つ以上を選ぶ組み合わせが何パターンあるか、 その中で基準値を超える組み合わせが何パターンか、 となりますが、公式で期待しているのは後者ですか。 例えば、 >A(5){10,20,30,40,50}要素数が5つ A(6){10,20,30,40,50,60}要素数が6つの場合、和は70(=中央値?)でしょうか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。イメージでいうとこんなかんじです 処理1:ある表を参照 処理2:ある表からレコード組み合わせテーブルを作成        処理3:処理2の表を一件ずつ和を計算する /*ここから繰り返し処理 */      処理3-1:条件分岐 合計=1000千円ならリストへ追加 → 処理3-2へ進む                合計≠1000千円なら次の組み合わせを計算 → 処理3へ戻る      処理3-2:リストへ追加する → 処理3へ戻る 処理4:処理3-2で処理したリストを表示する

関連するQ&A

  • エクセルで異なる数字を同系のものとして扱うことはできますか

    皆さんの質問やその回答に感心するばかりの者です。        数字を羅列したデータ表があります。0~9が円状に配置されている考え方で、例えば1023と2134,3245・・・(実際には12桁ですが)は先頭の数字に同一数を加えた配列という意味で同一パターンということにしており、以前は自分でパターンA,B,,,,ZZZと隣接セルに入れていたのですがパターン数か多すぎてやめました。 12桁の数字をいれて検索したときに、同一数値ではなく同一パターンの有無とそれはどんな組み合わせかを抽出する方法はあるものでしょか。 具体的な方法をご教授いただいても理解が伴わないと思いますので、これを学習してみれば、のアウトラインをお願いしたいのですが。

  • 乱数と順列と組み合わせ

    初心者です。MacPerlを使っています。 Perlを使って、例えば9個の文字の中から4個を選ぶ、という組み合わせを、すべてのパターンについてもれなく行うことはできますか? 完全にランダムなものはできました。(例えば、3個の文字を使って4文字からなる配列をすべて(3^4=81通り)作る、など。ひたすら作って同じ配列を消す、というあまり美しくない方法ですが・・・) ですが、rand関数を使うと、同じものが出てきてしまうことがあるので、数学でいうところのcombinationをつくることができずにいます。 permutationはなんとかできたのですが。。(これもやはり、同じものを消せばいいので。) combinationの場合、「並び方」は問わないので、同じ要素からなるが順列が異なる配列を同じものとして消したいのです。 どなたかその方法がわかる方はいらっしゃいますか?

    • ベストアンサー
    • Perl
  • 「組み合わせ」「序列」について

    同じ質問をしたのですが説明が悪かったためもう一度。 「組み合わせ」「序列」についてです。 たとえばA~E5つの要素の中で重複しない可能な限りの組み合わせの公式を知りたいのです。 たとえばそれぞれ2組づつにすると、 (1)A×B (2)A×C (3)A×D (4)A×E (5)B×C (6)B×D (7)B×E (8)C×D (9)C×E (10)D×E という組み合わせになります。 今度はこの組み合わせをワンセットにし((1)のA×B)、再び、5つの要素と組み合わせるようにもしたいのです。 (1)×A (1)×B (1)×C  ・  ・  ・ (2)×A (2)×B (2)×C  ・  ・  ・ というように。 この公式と、A+Bの組み合わせでも順序はB+Aという並べ方(順列?)もありますよね。 以上の例について、組み合わせと順列、これらの公式を教えてください。 説明文がわかりずらければ補足致します。 なお当方、数学ならずとも算数すら苦手なので、お手柔らかなご指導をお願いします。 説明文がわかりずらければ補足致します。

  • 高校数学の場合の数で、a、a、a、b、cから3個選

    んで1列に並べる方法の総数をすべて求めよ。・・・(1) と、集合U={a,b,c,d,e,f}の部分集合で、3個の要素からなるものをすべて求めよ。・・・(2) とでは、 (1)は文字を並べるわけだから、順番が関係ありますよね(a,b,cとb,a,cは違いますよね)? (2)は文字の組み合わせでいいから、順番は全然関係ありませんよね(a,b,cとb,a,cは同じですよね)? だから、(1)と(2)とでは、辞書式配列法や樹形図の求め方が変わってきますよね? おねがいします_(._.)_

  • 数学 組み合わせ?の問題 1,1,2,3,3

    数学 組み合わせ?の問題 1,1,2,3,3 上記の5つの数字を並び替えたいのですが、 何パターンあるでしょうか? 答えは30通りだと思うのですが、 地道に樹形図をつくってやってみました。 しかし、例えば、1,2,3,を並び替える場合、・・・(1) 3*2*1=6通り といったように、簡単に計算できます。 あるいは、例えば、1,1,1,2,2を並び替えるなら、・・・(2) 5P2=(5*4)/(2*1)=10通り といったように同じく容易に計算できます このように簡単に計算したいのですが・・・ よろしくお願いします。

  • 上限のある重複組合わせ(?)

    以下の42個の数字から、n個 抜き取った組合わせは何通りかという問題がありまして(自作)。 1, 5, 6, 6, 8, 8,10,13,13,14, 14,15,17,18,18,19,21,21,22,25, 26,27,28,28,30,30,30,30,30,31, 31,34,35,35,36,39,40,40,41,41, 41,42 総当りで出力し、カウントをするプログラムはできまして(n=0個から) 1 26 337 2902 18667 95612 405931 1468386 4616880 12809820 31736232 70875642 143789049 ・・・ という感じで答えはわかっているのですが、時間もかかるし(3sぐらい)実際の組合わせは知る必要はないので もっと数学的に計算でできないのか、考えているんですけど解りません。 問題を簡単にして、↓のように考えたのですが、やっぱり無駄に計算量が多いような気がします。 1,1,1,1,2,2,2,3,3,4 の10個の内 7個 4種類の数字の重複組合わせをベースとし 4 H 7 -> 4+7-1 C 7 -> 10 C 7 -> 120 ・4 は、1つしかないので、2つ以上を含むパターンを除外する 4-4 確定 あと 5つを 4 H 5 -> 56 ・3 は、2つしかないので、3つ以上含むパターンを除外する。 3-3-3 確定 あと4つを 4 H 4 -> 35 ・2 は、 3つしかないので、4つ以上含むパターンを除外する。 2-2-2-2 確定 あと3つを 4 H 3 -> 20 ・1 は、 4つしかないので、5つ以上含むパターンを除外する。 1-1-1-1-1 確定 あと2つを 4 H 2 -> 10 120-56-35-20-10 = -1 ただし、以下は重複しているので加算する。 4-4-3-3-3-*-* 10 4-4-2-2-2-2-* 4 3-3-3-2-2-2-2 1 4-4-1-1-1-1-1 1 -1 +10+4+1+1 -> 15 プログラムはすこしわかるのですが、数学はわかりません。 すぱっと数式ででるやりかたがあれば教えてください。

  • 数値を複数の群に分ける最適な組み合わせを求める方法

    次のような問題をCで記述するにはどのようにすればいいでしょうか? 要素数が不定の整数値配列がある。 この配列の各要素を、与えられた個数の群に分ける。 条件として、与えられた数値列で隣り合う数値しか同じ群に含めることは出来ない。 例: 数値列は{5,2,7,12,6,15,4} 群の個数を3とする。 (1) {5,2},{7,12,6},{15,4} (2) {5},{2,7},{12,6,15,4} (3) {5,2,7},{12},{6,15,4} ・・・ と複数の組み合わせがある。 これらの組み合わせのうち、各群の合計値が最も均等になるような組み合わせを求める。最大値と最小値の差が最小となる組み合わせを最も均等と考える。 上の例であれば、各群の合計値と、合計値の最大値と最小値の差は、 (1) {5,2},{7,12,6},{15,4} ==> 7,25,19 (25-7=18) (2) {5},{2,7},{12,6,15,4} ==> 5,9,37 (37-5=32) (3) {5,2,7},{12},{6,15,4} ==> 14,12,25 (25-12=13) ☆ のようになり、この3つの中で最も均等なのは (3) {5,2,7}{12}{6,15,4} となる。 実際は、これ以外の組み合わせでより均等となるものがあるかと思います。 この問題そのものが必要なわけではなく、この結果を利用して別のある問題を解決しようとしています。 数値の数が増えると組み合わせの数も大幅に増えて計算時間に影響すると思います。 全ての組み合わせを試すことなく答えにたどり着く方法があれば、考え方だけでも提示頂ければと思います。

  • 数学の「組み合わせ」を求めるプログラム

    お世話になっています。 早速ですが、数学の「組み合わせ」を求めるプログラムを作成中です。 例えば、1~6の数字の中から4個取り出す場合、パターンとしては、 (1,2,3,4) (1,2,3,5) (1,2,3,6) (1,2,4,5) (1,2,4,6) (1,2,5,6) (1,3,4,5) (1,3,4,6) (1,3,5,6) (1,4,5,6) (2,3,4,5) (2,3,4,6) (2,3,5,6) (2,4,5,6) (3,4,5,6) の15パターンが挙げられます。 「1~aの数字の中からb個取り出す」場合、上記の例だとa=6、b=4ですが、 このようにa,bにそれぞれ値を与えると、上記のようにすべての組み合わせを 求めてくれるPHPプログラムを作成中です。 実現方法、ソースコードなど、ご教授いただけないでしょうか。 よろしくお願い申し上げます。

    • 締切済み
    • PHP
  • エクセル関数の質問です。

    A1~A6を使って6種類、B1~B6を使って6種類、C1~C2を使って2種類、D1~D2を使って2種類の組み合わせをエクセルでできないかなあと思っています。 それぞれの列からひとつずつの抽出で、何パターンの組み合わせが出来るか、というような式はありますでしょうか。 昔数学でやったような気もするんですが、思い出せません・・・。 エクセル関数がなければ、数学の式でもいいです。 シグマとかってこれでしたっけ…? どなたかお願い致します。

  • c言語のプログラム

    「1」が3枚、「3」が3枚、「5」が3枚、「7」が4枚、「9」が5枚で合計18枚のカードがある。このカードを並べて6桁の数を3個作り、その3個の数の総和が「1234567」となるカードの組み合わせをすべて求めたいのですがどうすればよいか全然分かりません。 6桁の数を配列で表現し、和を求めるときに1の位から上位の桁へ順番に和が一致しているかチェックするのを、再帰呼び出しででしたいです。