• ベストアンサー

vba  組み合わせパターン表示

mina5の回答

  • mina5
  • ベストアンサー率44% (4/9)
回答No.1

問題は(nCm、nCm)でなく(nCm、m)でしょうね。

関連するQ&A

  • EXCEL VBAで組合せを作るには

    EXCEL VBAで組合せを作る方法を考えているのですが、なかなか思い付かず質問させて頂いています。 例) 1 2 3 4 5 … nという数字があり、そこから抜き取り組合せを作る。 ・2個ずつの組合せ 1と2 1と3 1と4 という感じで組合わせて行くが、2と1というような逆のパターンは除外する。 ・3個ずつの組合せ、4個ずつの組合せ…と最終n-1個(n個全てを抜取る組合せは1パターンしかないので、あえて作らなくてもよいのではと思っています)まで組合せを作って行く。 という内容です。 抜き取りたい数字の個数が、いつも決まった数ではなく、それに対応したものが考えきれなくてつまづきました。 どうかよろしくお願いいたします。

  • エクセルで組合せのパターンを表示したい

    12人から9人を選ぶ組合せのパターンをすべて表示させる 方法はないでしょうか?パターン数はCONBIN関数で220通り と求められました。この220通りを実際に表示させたいの です。エクセル上級者ではないので、簡単なマクロだと 助かりますが、いいアイデアがあれば教えてください。 よろしくお願いします。

  • 2つのセルの組み合わせ

    図のようなコードをもとに、セルの文字を連結させて商品管理番号をつくりたいと考えています。 (11A1、11A2・・・、12A1、12A2、・・・14A6) サンプルで出してありますが、このほかにもいくつかあります。 手動では大変なため、vbaにて処理をしたいと考えておりますが、 組み合わせなのか順列なのか、今ひとつ見当がつかず、どのようにvbaを記述すれば スッキリするのか悩んでおります。 for nextでの処理で変数を用いれば可能なのでしょうが・・・ 変数が1つなのか、2つなのか、どうもスッキリしません。 記述について、アドバイスいただければと思います。 不備がありましたらご指摘ください。よろしくお願いします。

  • 組合せ

    2個の整数m,n(m≧n)をキーボートから受け取って、m個の相異なる物の中からn個取り出す組合せの数を計算するプログラムを作っているんですが、下のプログラムだと、13の階乗でオーバーフローしてしまいました。combination関数を使わずに、13の階乗を計算したいのですが…。 13!/(k!(13-k)!)で、13!でオーバーフローなので、13!/k!=(k+1)×…×13を計算すればいいのは分かるのですが、どういう関数を定義すればいいのかわかりません。 ヒントやアドバイス頂けると、助かります。 よろしくお願いします。 #include <stdio.h> void main(void) {long m,n; long fact(long); while(scanf("%ld,%ld",&m,&n)!=EOF) printf("comb(%ld,%ld)=%ld\n",m,n, fact(m)/(fact(n)*fact(m-n))); } long fact(long k) {long i,f; f=1; for (i=1;i<=k;i=i+1) f=f*i; return(f); }

  • エクセルで2つの値の組合せによる値を表示するには

    うまくつたわるかわかりませんが、以下のようなことができる関数等を教えてください。 基礎データとして、以下のような表を用意(カンマで記述しますが、実際はエクセルの表で書いています) 大項目,中項目,パターン あああ,わわわ,パターン1 あああ,ををを,パターン2 いいい,わわわ,パターン3 いいい,ををを,パターン4 パターンは、大項目と中項目の組合せから決まります。 別のシートで、大項目と中項目を入力すると、あるセルにパターンを表示(パターン1から4のいづれか)させることがしたいです。大項目と中項目の組合せを変えると、動的にパターンが変化(確定表示)するイメージです。 関数で実現できない場合は、その他の実現方法をご教授ください。よろしくお願いします。

  • 組み合わせ

    n個の集合からp個を取る組み合わせの総数を出力するプログラムなんですが nCp=n!/p!(n-p)!という式を使い #include<stdio.h> int kaijo(int m); int comb(int n,int p); int main(void) { int i,j; printf("n="); scanf("%d",&i); printf("p="); scanf("%d",&j); printf("comb(%d,%d)=%d\n",i,j,comb(i,j)); } int kaijo(int m) { if(m>0) return(m*kaijo(m-1)); else return 1; } int comb(int n,int p) { if(n>0) return((n*kaijo(n-1))/(p*kaijo(p-1)*(n-p)*kaijo(n-p-1))); else return 1; } と書いてみたのですがこれではnが大きいとC言語のint型で扱える最大値を超えてしまい正しい結果が出力されません。  そこでint型を使ったままでnやpが大きい場合でもある程度出力できるようにしたいのですがどう改良したらよいのでしょうか? おそらくnCp=n*(n-1)*・・・*(n-p+1)/p!という式を使うのですがよく分かりません。よろしくお願いします。

  • 組み合わせ プログラミング

    c言語についてです os linux コンパイラはgccです long fact2(int n,int m)を作成してfact2(n,m)を使って組み合わせを計算するプログラムを作れという問題で下記のように作りましたが コンパイルできません. エラーメッセージは 2-1.c:14: error: 関数 `fact2' への引数が少なすぎます 2-1.c:14: error: 関数 `fact2' への引数が少なすぎます 2-1.c:14: error: 関数 `fact2' への引数が少なすぎます です 関数のとこが違うと思うですが どうしたらいいのかわかりません それともなにか他のとこが違うのでしょうか? #include <stdio.h> long fact2(int,int); main() { int n, m; long c; printf(" nCm (n>m) \n"); printf("input n m ="); scanf("%d %d",&n, &m); c =fact2(n) / (fact2(m) * fact2(n-m)); printf("%dC%d = %ld\n",n,m,c); } long fact2(int n,int m) { int i; long c=1; for(i=1; i<=n; i++) c*=i; return(c); }

  • Excel VBA 組み合わせパターン

    A1~A5 に、順に 「あ」「い」「う」「え」「お」が入っています。 B1に「3」を入れたとき C1以降、各セル1文字ずつで、 あああ ああい ああう …(略) おおえ おおお といった具合に表示させたいのです。 VBAで簡単にできるでしょうか。 ※A列のデータ数は変動します。

  • 物を選ぶパターン数について

    パターンを数える方法がわかりません 10個の石の中から10個の石を選ぶ(順不同)のは1パターンです 11個の石の中から10個の石を選ぶのは11パターンあります そこまではわかるのですが 12個の石の中から10個の石を選ぶのは何パターンあるのかがわかりません また、m個の中からn個の石を選ぶパターン数を求める方式があるのでしょうか? 教えてください よろしくお願いします

  • この問題での順列組み合わせの使い方は?

    n進数m桁の数字列を考える。 全部でn^m通りのパターンがある。 このうち、一回も現れない数字のあるパターンQは何通りか。 自分で立てた問題です(というか興味があるので知りたい) けど、どうしても分かりません。 解き方を教えて下さい。 以下は自分の考えた履歴です --- ある数字に着目して、それが選ばれないパターンは(n-1)^m通り これを数字の種類だけn倍すると、同じパターンを重複して数えてしまう気がする。 どうやって除去するか? --- 【n>mのとき】 m=1のとき、Q=n-1通り m=2のとき、 一回目と二回目で数字が同じパターンはn通り 異なるパターンはn*(n-1)通り ・・・ここから先が分からない