• ベストアンサー

組み合わせを選ぶためのプログラミングについて

どなたか、こんなプログラムがエクセルなどの計算ソフトで作成できるものなのか教えてください。 例えば、1,2,3,4 という数字の因子があり、このうちのどんな組み合わせでも良いので4になる組み合わせを選び出し、答えとして「1,3」 と 「4」 を導き出すプログラムです。 よろしく御願いします。

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

  • ベストアンサー
  • KojiS
  • ベストアンサー率46% (145/312)
回答No.3

ここの「お知らせ」や「はじめての方へ」や「ご利用ガイド」等を細かく見ていただければわかると思いますが、 ・自分の環境 ・自分のスキルレベル ・何をやりたいか ・自分はどうやったか ・どううまくいかないか 等をできる範囲で細かく書いていただけないと、適切な回答はできません。 例えばプログラムをしようとしているのに「アルゴリズム」という単語を知らなかったというのは貴方の「お礼」で初めてわかりました。 仕事でプログラムをするなら、「情報処理用語辞典」のたぐいの書籍は最低入手しておきましょう。趣味でやられる方にはここまで言いませんが。 こういう内容の解法の物は、数学的な物ですから、たぶんそこら辺を調べないといけないと思います。「アルゴリズム辞典」のたぐいにもあるかもしれません。ただ、VBAでのサンプルは載っていないでしょうから、他の知識も必要になるかもしれません。(例えばC言語) 前回も言いましたが、簡単なのは総当たりでやってみるということですね。1と2を足したら3だから違う、1と3を足したら4だから解の1つ、1と4を足したら5だから違う、というふうにです。やり方としては稚拙ですが、まずこういう簡単に思いつく方法でやってみて、その後そのアルゴリズムを最適化していくという手法をとれば、多少はましになるでしょう。最適化で思いつく1つは、足される前の数字の1つが既に合計を越えていたら計算しない、等ですね。 それでは、がんばってください。

tokyotomin
質問者

お礼

お二人とも、私のつたない質問にお付き合いいただき、どうも有り難うございました。 お二人のアドバイスに基づいて、資料等を探していきたいと思います。 ありがとう(^з^)-☆チュ!!   と男からされてもきしょいだけでしょうから、ポイントをお二人におつけします。 ほんとはお二人に20づつあげたいのですが、そうも行かないので、回答を頂いた順でご容赦ください。 ほんとに、どうもでした。

その他の回答 (3)

  • i-touch
  • ベストアンサー率40% (170/415)
回答No.4

「プログラムが組めるか」という質問なのか、「このプログラムはどう作るのか」という質問なのかよく分からないところがありますが・・・ エクセルでは「マクロ」=VBA(VisualBasic for Applicationだったか)という領域で、プログラムが組めるようになっていて、そこにBASIC言語でプログラムを書いて、すぐに実行できます。 一度起動して「ツール」→「マクロ」・・・とやってみてください。 例のプログラムでなら、前の方が書いたとおり、総当りのロジックを書くといいかと思います。 いかに計算回数が多くても、パソコンがやってくれますから。 VBAの使い方は、本屋に行って、VBA関連の本を買ってくるといいかと思います。 いっぱいありますよ。用途に応じたものを選んでください。 そのつど変更する変数や、結果の数値は、エクセルのセルからもらったり、出力させたりするといいと思います。(入出力項目が少ないときは InputBoxとかMsgBoxで) プログラミングは面白いので、はまりすぎないように頑張ってください。

tokyotomin
質問者

お礼

お二人とも、私のつたない質問にお付き合いいただき、どうも有り難うございました。 お二人のアドバイスに基づいて、資料等を探していきたいと思います。 ありがとう(^з^)-☆チュ!!   と男からされてもきもいだけでしょうから、ポイントをお二人におつけします。 ほんとはお二人に20づつあげたいのですが、そうも行かないので、回答を頂いた順でご容赦ください。 ほんとに、どうもでした。

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.2

解法は、まず手動で解く時にどうするか、ということから入ります。一番簡単に思いつくのは総当たりですね。それをプログラムしてみましょう。 仕事に使うのですから、こういうところで質問する前に、いろいろ調べ考えましょう。アルゴリズム辞典のたぐいの本にはあるかもしれません。また、数学的な解法もあるかもしれません。 まずは本屋で探すのが良いかもしれません。 蛇足:できている物を無償でもらおうという考えはやめましょう。

tokyotomin
質問者

お礼

早速のご回答有り難うございます。回答中のご指摘は、ある面では、もっともだと思います。私の質問中にご指摘のとおり適切ではない考え方もあったと思い、今後記載に当たっては、熟考するようにしたいと思います。 ただ、全くわからないものが物事を調べる場合、この場は、良い取っ掛かりを探す場だとは思うのですよ。 本で調べるのであろうと知人に聞くのであろうと教えてgooであろうとネットサーフィンであろうと、取っ掛かりを探すという作業には大差はないと思うからです。 その根拠としては、現にご回答により、アルゴリズムという単語そのものがわからないとの状況が若干打破できたと言えるからです。 その点において、今回及び前回のご回答には大変感謝しております。 どうも有り難うございました。

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.1

エクセル自体の機能では無いはずです。 プログラムという観点から見れば、どういうアルゴリズムを考えているかによります。 アルゴリズム(解法)は考えていますか?

tokyotomin
質問者

補足

早速の回答有り難うございます。 質問が適切でなくて申し訳ありません。私自身が全くそういうことがわからないものですが、仕事に必要なことから、ごく簡単にできるものなら作り方を教えてもらって何とか作れればと思ったのです。 ただ、アルゴリズムと言われただけで、めまいがするため前途多難な感じがします。 私のイメージとしては、解法はどんなものでも良いですが、応用の利くもの、たとえば答えが10になるものという方法もできるし、答えが8~10になるものという方法もできるものでないと困ると考えています。 ですが、正直に言えば、もしそういったプログラムを組んだエクセルのデータをお持ちなら、分けていただけたりすると、ものすごく喜びます。

関連するQ&A

  • 複数の数字の組み合わせの中から合計がAになる組み合わせを探す方法

    例えば、1~10の数字があって、その中から合計が10になる組み合わせを探す、という計算式はExcelで作成することはできますか?(答えは[1+2+3+4][1+2+7][1+3+6][1+4+5][1+9][2+3+5][2+8][3+7][4+6]の9通り) もしくは、複数の組み合わせで計算させて、合計が10になったものを検索するという計算式は可能でしょうか? よろしくお願いします。

  • EXCELで組合せのやり方を教えてください。

    EXCELで組合せのやり方を教えてください。 こんにちは!質問をお願いします。 (1) 複数ある数字からいくつか足してわかっている数字(A)と同じにする (2) それから(A)になるのに使った数字がどれか という計算をEXCELで計算方法を知りたいです。 例えば 複数ある数字(X) :24 50 77 458 550 140 わかってる数字(A):267       ↓ 267(A)になるのには(X)の中のどの数字を足せば良いか? ここでは 50 77 140がエクセルの答えとして出てきてほしい という感じです。 ただ、マクロは組めないのでできればシンプルなものでお願いします。

  • 組合せ 

    1から i番目まで、数字がランダムに並んでいます。(マイナス数値からプラス数値まで)。 これらの数値の組合せで、組合せの合計値が、ある目標値になる組合せのすべてを発見して、その組合せを1からiの番号で表示したいのです。 目標値は一個だけ定めます。 どのような論理を組めば可能でしょうか。(この論理をエクセルソフトに組み込み計算します)。

  • エクセルで組み合わせ計算

    質問があります。エクセル使えば計算とか、いろいろ覚えれば簡単に出来ると言われ前に組み合わせ計算教わった記憶が、あるんですが忘れてしまったので分かる方教えて下さい。 質問内容は、 数字で1・2・3・4・5・6・7があります。 7個の数字を3個ずつ組み合わせしたいんです。 (1・2・3)(1・2・4)(1・2・5)このような感じ何ですが 同じ数字がダブらない様にしたいんです。途中で(2・3・1)があると先に書いた(1・2・3)があるので×何ですが全部で35通りの組み合わせになると思うんですが、この様な計算も1欄で組み合わせ表示が出来るんでしょうか? また、この程度のエクセルレベルは初級位でしょうか? 宜しくお願いします。

  • 指定した数字が含まれる組合せを抽出する。

    どなたかご存じでしたら回答をお願いします。 数字選択式宝くじの「ミニロト」の組合せをフリーソフトで作成&CSVデータに出力しています。 これをエクセルに取りこむと下記のようになります。 【作成されてエクセルに取りこんだCSVデータ】 01 04 06 07 22 01 06 07 13 22 01 06 07 22 27 03 04 11 13 29 04 13 15 18 27 ここから、「指定した数字の○ or ○ or ○ or ○ or ○が含まれる組合せを抽出する。」 というのをエクセルでやりたいですがどうやればよいでしょうか? できれば1回の操作で結果が出るのがよいです。 上記例でいうと、「指定した数字の4 or 13 が含まれる組合せを抽出する。」と指定すれば 下記抽出結果が得られる。 【抽出結果】 01 04 06 07 22 01 06 07 13 22 03 04 11 13 29 04 13 15 18 27 CSVデータは1個~169911個まであります。 指定された数字が第1数字~第5数字のいずれかに入っていれば抽出対象です。 指定する数字は1個~5個です。 エクセルの操作およびVBAでのソースを教えて下さい。 よろしくお願いします。

  • 組み合わせの表を作成したいのですが・・・

    画像のように9×3の組み合わせをEXCELの表で作成したいと思っています。 組み合わせの数は、3^9通り、即ち19,683通りあります。 途中までは作成したのですが、合っているのか合っていないのか分かりません。 もっと簡単に組み合わせの表が出来ないか、考えています。 エクセルの関数若しくはVBAで計算できる方法があれば教えて頂けると幸いです。 どうかよろしくお願いいたします。

  • エクセルでの組み合わせ出力方法(計算含む)

    エクセルの初心者です。 エクセルで作成した数字の表を利用して、その表の中の任意の数字の組み合わせの合計が、ある数字ぴったりの組み合わせを探し出すにはどうすればいいでしょうか?表の数字は50くらいあります。

  • 数字の組み合わせを教えて!

    7つの数字から4つの数字の組み合わせがいくつ出来ますか?(1,2,3,4)と(4,3,2,1)は使われている数字が同じなので1つと数えます。実際に書き出して、同じ組み合わせを探して消していくと凄い時間が掛かるので計算方法を知っている方教えて下さい! ◎7つの数字から4つの数字の組み合わせがいくつ出来ますか? ◎8つの数字から4つの数字の組み合わせがいくつ出来ますか? ◎9つの数字から4つの数字の組み合わせがいくつ出来ますか? ◎10この数字から4つの数字の組み合わせがいくつ出来ますか?

  • 組み合わせを実際に作成したい

    8人を4人づつのA・B2組に振り分ける組み合わせは 70通りと計算では出たのですが、実際に組み合わせを 作成すると70通り出来ません。 エクセルで関数を使って実際の組み合わせを作成することは出来るのでしょうか。 もし、出来るのならば、やり方も教えていただければと思います。 宜しくお願いします。

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

    以下の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 プログラムはすこしわかるのですが、数学はわかりません。 すぱっと数式ででるやりかたがあれば教えてください。