親子におすすめの新型プラネタリウムとは?

Excelでデータ全通り組み合わせ出力方法について教えて頂けますと助かります。

セルA~Eに、数がまちまちのアイテム名が入っています。
(セルA~Eというのは例で、変則的に全てのアイテム数は増減します。)

全ての組合せをセルG~Kに各々書き出してくれる方法はあるでしょうか?
(イメージ添付あり)

できればセルに入力すれば自動的に組合せが追加されていくのが理想です。
Excel2010を使用しており、VBAは初心者です。


どなたかご存じでしたら、ぜひお教え下さい。
よろしくお願いします。

「Excelでデータ全通り組み合わせ出力方」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (4件)

#1、2、cjです。

#1、2、補足欄へのレスです。

取り急ぎ、コードのみ修正しました。
#2を元に書き換えています。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rSrc As Range
  Application.EnableEvents = False
  Set rSrc = Range("B2").CurrentRegion
  Application.EnableEvents = True
  If Intersect(Target, rSrc) Is Nothing Then Exit Sub
  Application.EnableEvents = False
  Call PrintCombi(rSrc)
  Application.EnableEvents = True
End Sub

Sub PrintCombi(ByVal rSrc As Range)
  Dim tnFld As Long
  Dim nRc As Long
  Dim nConti As Long
  Dim nRow As Long
  Dim i As Long
  Dim j As Long

  tnFld = rSrc.Columns.Count
  nConti = 1
  With rSrc(1, rSrc.Columns.Count + 3)
    .CurrentRegion.Clear
    Cells(1).Resize(, tnFld).Copy .Cells(1)
    For i = tnFld To 1 Step -1
      nRc = Cells(Rows.Count, i).End(xlUp).Row
      nRow = 2
      For j = 2 To nRc
        Cells(j, i).Copy Destination:=.Cells(nRow, i).Resize(nConti)
        nRow = nRow + nConti
      Next j
      nConti = nConti * (nRc - 1)
    Next i
    With .Cells(2, 1).Resize(nConti)
      For i = 2 To tnFld
        Range(.Cells(1, i), .Cells(.Cells.Count + 1, i).End(xlUp)).Copy Destination:=.Columns(i)
      Next i
    End With
  End With
End Sub
    • good
    • 2
この回答へのお礼

cj_mover さん

ほんとうに理想が叶いました!
ご丁寧に回答くださり、とても助かりました。
ありがとうございます!!

お礼日時:2013/10/22 18:17

 横1列に並んだ6個(A~E列の列数+1)の適当な未使用のセルを作業用セルとして使用します。


 ここでは仮に、M1~R1を作業用セルとして使用するものとします。

 まず、R1セルに

1

と入力して下さい。
 次に、Q1セルに次の関数を入力して下さい。

=MAX(IF(COUNTIF(E:E,"*?"),MATCH("*?",E:E,-1),1),IF(COUNT(E:E),MATCH(MAX(E:E)+1,E:E),1))

 次に、Q1セルをコピーして、M1~P1の範囲に貼り付けて下さい。
 次に、K1セルに次の関数を入力して下さい。

=IF(ROWS($1:1)>PRODUCT($M$1:$Q$1),"",IF(INDEX(E:E,MOD(INT((ROWS($1:1)-1)/PRODUCT(R$1:$R$1)),Q$1)-ROW(E$1)+2)="","",INDEX(E:E,MOD(INT((ROWS($1:1)-1)/PRODUCT(R$1:$R$1)),Q$1)-ROW(E$1)+2)))

 次に、K1セルをコピーして、G1~J1の範囲に貼り付けて下さい。
 次に、K1~J1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。

 以上です。
「Excelでデータ全通り組み合わせ出力方」の回答画像3
    • good
    • 1
この回答へのお礼

kagakusuki さん

まだうまく使いこなせていないのですが、
ご回答ありがとうございました。

お礼日時:2013/10/22 17:47

#1、cjです。


ちょっとミスしましたので、コードの差し替えをお願いします。

加えて、
> 右側、1列挟んで右側に、全通りの組合わせを
> 作成します。
この部分の説明ですが、
右側、2列挟んで右側に、全通りの組合わせを
作成します。
というようにしないと、列を追加しながらの作成がうまく行きませんでした。
実際に試す際も、予め、入力範囲の右側に2列の空列がある状態から
始めるようにしてください。
失礼しました。



' ' ここから



Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rSrc As Range
  Application.EnableEvents = False
  Set rSrc = Range("B2").CurrentRegion
  Application.EnableEvents = True
  If Intersect(Target, rSrc) Is Nothing Then Exit Sub
  Application.EnableEvents = False
  Call PrintCombi(rSrc)
  Application.EnableEvents = True
End Sub

Sub PrintCombi(ByVal rSrc As Range)
  Dim tnFld As Long
  Dim nRc As Long
  Dim nConti As Long
  Dim nRow As Long
  Dim i As Long
  Dim j As Long

  tnFld = rSrc.Columns.Count
  nConti = 1
  With rSrc(1, rSrc.Columns.Count + 3)
    .CurrentRegion.Clear
    For i = tnFld To 1 Step -1
      nRc = Cells(Rows.Count, i).End(xlUp).Row
      nRow = 1
      For j = 1 To nRc
        Cells(j, i).Copy Destination:=.Cells(nRow, i).Resize(nConti)
        nRow = nRow + nConti
      Next j
      nConti = nConti * nRc
    Next i
    With .Resize(nConti)
      For i = 2 To tnFld
        Range(.Cells(1, i), .Cells(Rows.Count, i).End(xlUp)).Copy Destination:=.Columns(i)
      Next i
    End With
  End With
End Sub


' ' ここまで

この回答への補足

cj_mover さん!
変更したい箇所があるので、補足入力しました。
どうか気づいてください・・・><

コードの差し替えのご連絡ありがとうございます。

補足日時:2013/10/22 17:01
    • good
    • 0

こんにちは。



VBAですが、なるべく基本的な書き方にしました。

適用したいシートを表示して、
シートタブを右クリック、[コードの表示]をクリック、
表示された白いシート(VBEのシートモジュール)に
下記をコピペして
Alt + F11 キーでExcelに戻ります。

以降、A1から連続したセル範囲を書き換える度に、
右側、1列挟んで右側に、全通りの組合わせを
作成します。

' ' ここから

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rSrc As Range
  Application.EnableEvents = False
  Set rSrc = Range("B2").CurrentRegion
  Application.EnableEvents = True
  If Intersect(Target, rSrc) Is Nothing Then Exit Sub
  Application.EnableEvents = False
  Call PrintCombi(rSrc)
  Application.EnableEvents = True
End Sub

Sub PrintCombi(ByVal rSrc As Range)
  Dim tnFld As Long
  Dim nRc As Long
  Dim nConti As Long
  Dim nRow As Long
  Dim i As Long
  Dim j As Long

  tnFld = rSrc.Columns.Count
  nConti = 1
  With rSrc(1, rSrc.Columns.Count + 2)
    .CurrentRegion.Clear
    For i = tnFld To 1 Step -1
      nRc = Cells(Rows.Count, i).End(xlUp).Row
      nRow = 1
      For j = 1 To nRc
        Cells(j, i).Copy Destination:=.Cells(nRow, i).Resize(nConti)
        nRow = nRow + nConti
      Next j
      nConti = nConti * nRc
    Next i
    With .Resize(nConti / nRc)
      For i = 3 To tnFld
        Range(.Cells(1, i), .Cells(1, i).End(xlDown)).Copy Destination:=.Columns(i)
      Next i
    End With
  End With
End Sub

' ' ここまで
「Excelでデータ全通り組み合わせ出力方」の回答画像1

この回答への補足

cj_mover さま、ご回答ありがとうございます。
完璧にできました!!

恐れ入りますが追加希望がございまして。
1行目は項目を入れたいので、参照したくありません。
いただいたものを編集してみようと思ったのですが、スキがなくて、わかりません。。。。
2行目以降からスタートという風に書き換えるにはどうすればよろしいでしょうか?

またこの質問に気づいていただけることを祈って。

補足日時:2013/10/22 16:40
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelでの全通りの組み合わせ出力方法(文字列)

Excelについて全くの初心者で、教えて頂きたい質問があります。

Excelの文字列の全通りの組み合わせを出力がしたいのですが、その方法が分かりません。
例えばセルAに
・りんご
・みかん
・いちご

セルBに
・だいこん
・キャベツ
・トマト

があり、別のセルにその全通りの組み合わせを出力
(文字と文字の間はスペース)

りんご だいこん
りんご キャベツ
りんご トマト
みかん だいこん
みかん キャベツ
みかん トマト
いちご だいこん
いちご キャベツ
いちご トマト

この様に出来る方法はあるでしょうか?
また出来ればその裏(だいこん りんご)も出力したいと考えており、キーワードは3つまで出来るようになりたいです。

どなたかご存じでしたら、ぜひお教え下さい。
よろしくお願いします。

Aベストアンサー

A列B列は1行目からデータがあるものとします。
C列に転記するものとします。

以下の手順をおためしください。

1.Altキー+F11キーでVisualBasicEditorを呼び出します。

2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。

Sub test01()
a = Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行取得
b = Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行取得
For i = 1 To a '1行からA列最終行まで繰り返し
For n = 1 To b '1行からB列最終行まで繰り返し
x = x + 1
Cells(x, "C") = Cells(i, "A") & " " & Cells(n, "B") 'C列に結合して転記
Next n
Next i
End Sub

3.Alt+F11キーでワークシートへもどります.

4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test01)を選択して実行

これでできます。
これがわかれば「裏」というのも簡単ですよね。
以上はVBAでの回答ですが、外していたらごめんなさい。

A列B列は1行目からデータがあるものとします。
C列に転記するものとします。

以下の手順をおためしください。

1.Altキー+F11キーでVisualBasicEditorを呼び出します。

2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。

Sub test01()
a = Cells(Rows.Count, "A").End(xlUp).Row 'A列最終行取得
b = Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行取得
For i = 1 To a '1行からA列最終行まで繰り返し
For n = 1 To b '1行...続きを読む

QExcelでの全通りの組み合わせ出力方法2

こんにちは。
http://oshiete.goo.ne.jp/qa/4122783.html
にあった質問より、もう少し複雑な組み合わせを出力したいと思っています。

例えば
【肉類】として
牛肉 豚肉 鶏肉 魚肉  の中から2つ選び
【根菜】として
大根 にんじん たまねぎ サツマイモ の中から2つ選び
【葉野菜】として
キャベツ 白菜 キャベツ レタス ほうれん草 の中から2つ選ぶ、

といった場合の全ての組み合わせを

【肉類】【根菜】【葉野菜】の列、または
【肉類1】【肉類2】【根菜1】【根菜2】【葉野菜1】【葉野菜2】の列に出力する事は出来るものでしょうか?

組み合わせ例としては、

牛肉、魚肉、大根、たまねぎ、レタス、ほうれん草

のような感じです。
実際に使用したい選択肢の総数が100個ほどあり、手入力には多すぎるので
なんとかExcelで出来たらと思ってるのですが……。

 ご存知の方がいらっしゃいましたらご教授下さい!

Aベストアンサー

組み合わせ(順番は関係ない)という前提で
A1セルに総数 =PRODUCT(B1:D1)
B1セルに「肉」の組み合わせ数 =COMBIN(4,2)
C1セルに「根菜」の組み合わせ数 =COMBIN(4,2)
D1セルに「葉」の組み合わせ数 =COMBIN(5,2)

A2セルに連番として 1
B2セルに=IF($A2>$A$1,"",MOD(INT(($A2-1)/C$1/D$1),B$1)+1)
C2セルに=IF($A2>$A$1,"",MOD(INT(($A2-1)/$D$1),C$1)+1)
D2セルに=IF($A2>$A$1,"",MOD($A2-1,D$1)+1)
(D2セルから考えた)
A2:D2下へオートフィル連番360まで


各組合せ
I1セルに肉の品数の4
K5セルに根菜の品数の4
M5セルに葉の品数の5
I2に1、J2に2 右へコピー

I3セルに =(COUNTIF(I$2:I2,I2)>=I$1-I2)+I2
J3セルに =IF(I3<>I2,I3+1,J2+1)
I3:J3セルを右へ下へオートフィル
(添付図の罫線で囲まれた部分しか使わない)

E2セルに肉
=INDEX(P:P,INDEX(I:I,B2+1)+1)&" "&INDEX(P:P,INDEX(J:J,B2+1)+1)
F2セルに根菜
=INDEX(Q:Q,INDEX(K:K,C2+1)+1)&" "&INDEX(Q:Q,INDEX(L:L,C2+1)+1)
G2セルに葉
=INDEX(R:R,INDEX(M:M,D2+1)+1)&" "&INDEX(R:R,INDEX(N:N,D2+1)+1)
E2:G2セル フィルハンドルダブルクリック

考え方を理解するようにしてください

組み合わせ(順番は関係ない)という前提で
A1セルに総数 =PRODUCT(B1:D1)
B1セルに「肉」の組み合わせ数 =COMBIN(4,2)
C1セルに「根菜」の組み合わせ数 =COMBIN(4,2)
D1セルに「葉」の組み合わせ数 =COMBIN(5,2)

A2セルに連番として 1
B2セルに=IF($A2>$A$1,"",MOD(INT(($A2-1)/C$1/D$1),B$1)+1)
C2セルに=IF($A2>$A$1,"",MOD(INT(($A2-1)/$D$1),C$1)+1)
D2セルに=IF($A2>$A$1,"",MOD($A2-1,D$1)+1)
(D2セルから考えた)
A2:D2下へオートフィル連番360まで


各組合せ
I1セルに肉の品数の4
K5セルに根菜の品数の4...続きを読む

QExcelですべての組合せ(重複組合せ)を出力するには?

Excelですべての組合せ(重複組合せ)を出力するには?

次の条件のような場合、Excelですべての組合せ(重複組合せ)をVBAで出力するにはどうしたらいいのでしょうか?

10種類のお菓子の中から、好きなものを3個選んでセットにするとします。
同じものを複数選ぶのはありですが「菓子A、菓子B、菓子C」と「菓子B、菓子C、菓子A」は選んだ順が違うだけで同じ組合せなので、どちらか片方だけにします。

この場合、すべての組合せの数は Excelの関数で求めることができるようで COMBIN(10+3-1,3) = 220 通りあることまではわかりましたが、このすべての組合せの一覧をどのようにして出力したらいいのかがわかりません。

いろいろ検索した結果、順列という方法は見つかりましたが、重複組合せでの方法は見つけることができませんでした。
また、Accessを使っても似たようなことができるのでしょうか? 直積?

できれば、3個固定ではなく5個の場合も出来るとうれしいです。
よろしくお願いします。

Aベストアンサー

>同じものを複数選ぶのはありですが「菓子A、菓子B、菓子C」と「菓子B、菓子C、菓
つまり「菓子A、菓子A、菓子A」も「菓子A、菓子A、菓子B」もあり ですね。
№2さんのコードをお借りして
Sub Test()
  Dim myStr As Variant
  Dim rowX As Long
  Dim i As Long, j As Long, k As Long
  Const MaxNum = 10

  myStr = Split("A B C D E F G H I J")
  rowX = 1
  For i = 0 To MaxNum - 1
    For j = i To MaxNum - 1
      For k = j To MaxNum - 1
        Cells(rowX, 1).Value = myStr(i)
        Cells(rowX, 2).Value = myStr(j)
        Cells(rowX, 3).Value = myStr(k)
        rowX = rowX + 1
      Next k
    Next j
  Next i
End Sub

>同じものを複数選ぶのはありですが「菓子A、菓子B、菓子C」と「菓子B、菓子C、菓
つまり「菓子A、菓子A、菓子A」も「菓子A、菓子A、菓子B」もあり ですね。
№2さんのコードをお借りして
Sub Test()
  Dim myStr As Variant
  Dim rowX As Long
  Dim i As Long, j As Long, k As Long
  Const MaxNum = 10

  myStr = Split("A B C D E F G H I J")
  rowX = 1
  For i = 0 To MaxNum - 1
    For j = i To MaxNum - 1
      For k = j To MaxNum - 1
       ...続きを読む

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

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

Aベストアンサー

ご希望の操作は、50個のセルに入力されている値の中からいくつかの数字を選択して、その数字の合計が特定の値になる組み合わせを探したいということでしょうか?

その場合はソルバーの機能を利用します。

たとえばA1からA50セルに任意の数字が入力されている場合、C1セルに「=SUMPRODUCT(A1:A50,B1:B50)」と入力しこのセルを選択しておき、「ツール」「ソルバー」(表示されない場合は「アドイン」からソルバーにチェックを入れます)から、目標値の「値」の欄にチェックを入れ、合計する目標数字を入力し、変化させるセルの欄は「B1:B50」セルを選択し、制約条件で「追加」ボタンを押し、左側の欄に「B1:B50」セル、真ん中を「データ」にして「OK」します。
条件を入力したら「キャンセル」して元のダイアログを表示して、「OK」します。

これで目標値が見つかりましたと表示された場合、B列に1と表示されているA列の数字の組み合わせが、求める組み合わせデータとなります。

Q「○○通りのパターンがある」の計算のしかた

よくこの組み合わせは全部で1万通りのパターンが存在するというようなことを聞きますが、
あれの方程式などはあるのでしょうか。

以下の例で説明をお願いします。

1. [a,b,c]の3つだけの文字列を作った時のパターン数
2. 英数字のみのパスワード4桁のパターン数
3. [a,b,c,d,e,f,g]の中から4文字をつかった文字列のパターン数。

Aベストアンサー

ちゃんと中学で確率を勉強しましたか?
方程式というか中学生で習う確率の授業をちゃんとやればわかります。難しいとこは
全くなく基本です。

(1)(a.b.c)の3つだけの文字列を作った時のパターン数

▼3つだけを使うので同じものは2回使えない
▽最初にa.b.cの3つのうちのひとつが選べる
▽次に最初に選んだもの以外の2つのうちのひとつが選べる
▽最後に1つ残る

従って
3×2×1=6

で答えは6通り

▽検証
下記がその6通り
a.b.c
a.c.b
b.a.c
b.c.a
c.a.b
c.b.a

(2)英数字のみのパスワード4桁

アルファベットは26文字
数字は10種類

▼同じ英数字を二度使ってもかまわないので

選べる英数字は毎回36通り

ここから4桁を選ぶのだから

36×36×36×36=1679616

1679616通り

(3)(a.b.c.d.e.f.g)の中から4文字を使った文字列のパターン

▼同じ文字を二度使わない場合
▽最初は7つ選べる
▽二回目は6つから選べる
▽三回目は5つから選べる
▽四回目は4つから選べる

7×6×5×4=840

840通り

ちなみに
▼同じ文字を二度使ってもよい場合なら
▽毎回7つから選択できる

7×7×7×7=2401

2401通り

ちゃんと中学で確率を勉強しましたか?
方程式というか中学生で習う確率の授業をちゃんとやればわかります。難しいとこは
全くなく基本です。

(1)(a.b.c)の3つだけの文字列を作った時のパターン数

▼3つだけを使うので同じものは2回使えない
▽最初にa.b.cの3つのうちのひとつが選べる
▽次に最初に選んだもの以外の2つのうちのひとつが選べる
▽最後に1つ残る

従って
3×2×1=6

で答えは6通り

▽検証
下記がその6通り
a.b.c
a.c.b
b.a.c
b.c.a
c.a.b
c.b.a

(2)英数字のみの...続きを読む

Qエクセルで順列の列挙

例えば
1 と 2 という2個の数字(文字)がある場合,

 A列 B列
  1   2
  2   1

1 2 3 という3個の数字(文字)がある場合,

 A列 B列 C列
  1   2   3
  1   3   2
  2   1   3
  2   3   1
  3   1   2
  3   2   1

1 2 3 4 という4個の数字(文字)がある場合,

 A列 B列 C列 D列
  1   2   3   4
  1   2   4   3
   ~ 省略 ~
  4   3   2   1

という具合に n 個の数字(文字)がある場合,過不足無く列挙させるマクロ(VBA)を教えてください。
Excelの仕様上65,536行までしかないので,「8個の場合」とかいう限定された個数でもかまいません。
また,123,132,213,…,321 という具合に数値として1列に並べる方法でもかまいません。
また昇り順でなくてもかまいません。 よろしくおねがいします。

Aベストアンサー

こんにちは。

学校の宿題とかではありませんよね。
以下は、再帰を使った、順列生成のアルゴリズムです。
たぶん、大丈夫だと思います。後は、65536を超えないようにしてください。

Const N As Integer = 3 '生成する順列数
Dim k As Long
Dim p(1 To N)
Sub perm_test()
 Dim i As Long
 ActiveSheet.Cells.ClearContents
 k = 0
 For i = 1 To N
  p(i) = i
 Next i
 perm 1
End Sub
Private Sub perm(i As Long)
 Dim j As Long, t As Long
 If i < N Then
  For j = i To N
   t = p(i): p(i) = p(j): p(j) = t
   perm i + 1
   t = p(i): p(i) = p(j): p(j) = t
  Next j
 Else
   For j = 1 To N
    Cells(k + 1, j).Value = p(j)
   Next j
   k = k + 1
 End If
End Sub

こんにちは。

学校の宿題とかではありませんよね。
以下は、再帰を使った、順列生成のアルゴリズムです。
たぶん、大丈夫だと思います。後は、65536を超えないようにしてください。

Const N As Integer = 3 '生成する順列数
Dim k As Long
Dim p(1 To N)
Sub perm_test()
 Dim i As Long
 ActiveSheet.Cells.ClearContents
 k = 0
 For i = 1 To N
  p(i) = i
 Next i
 perm 1
End Sub
Private Sub perm(i As Long)
 Dim j As Long, t As Long
 If i < N Then
  For j = i To N...続きを読む

QエクセルでnCr (組み合わせ)の作成方法

どなたかご存じでしたら回答願います。
ミニロトとロト6をエクセルを使用して予想に利用しております。
その中で知りたいのは、下記の場合のエクセルVBAのソースです。

●知りたいこと。

(1)ミニロトの場合は、31個から5個全てが一致すると一等ですが、
 「25個から5個選択した場合の組み合わせ(25C5)」作成方法

(2)ロト6の場合は、43個から6個全てが一致すると一等ですが、
 「24個から6個選択した場合の組み合わせ(24C6)」作成方法。

●入力

(1)ミニロトの場合は、下記のように5×5マスに重複しない数字が入っています。
  数字は毎回変わります。
  1   2 5 6 7
10 4 11 13 15
8 9 17 21 28
14 16 18 20 25
19 22 23 24 27

(2)ロト6の場合は、下記のように6×4マスに重複しない数字が入っています。
  数字は毎回変わります。

  1   2 5 6 7 19
10 4 11 13 5 22
8 9 17 21 28 23
14 16 18 20 25 24

●出力

  VBAを実行すると、新シートにそれぞれ、25C5又は、24C6の全組み合わせが出力される。

【注意事項】
   ・使用しているエクセルは2010です。

以上、ご回答よろしくお願いします。

どなたかご存じでしたら回答願います。
ミニロトとロト6をエクセルを使用して予想に利用しております。
その中で知りたいのは、下記の場合のエクセルVBAのソースです。

●知りたいこと。

(1)ミニロトの場合は、31個から5個全てが一致すると一等ですが、
 「25個から5個選択した場合の組み合わせ(25C5)」作成方法

(2)ロト6の場合は、43個から6個全てが一致すると一等ですが、
 「24個から6個選択した場合の組み合わせ(24C6)」作成方法。

●入力

(1)ミニロトの場合は、下記のように5×5マス...続きを読む

Aベストアンサー

過去のQ&A(参考URL)を参照なさってはいかがでしょう?

参考URL:http://oshiete.goo.ne.jp/qa/5571459.html

Qエクセル2007で総当り表を作りたいです。

エクセル2007で俗に言う総当り表を作りたいのですが、分からないことがあり作成が進みません。
あれこれ調べてみたのですが私自身関数が得意というわけでもなく…こちらで質問させていただきます。

画像のように

(1)2行目のデータを、関数・オートフィルを用いて2列目に並べなおす
(2)同一のデータ同士が当たらないように、斜めに線を(自動で)引く

という状態にしたいと考えています。
それぞれ、どのような設定・関数を用いればよいのでしょうか?

Aベストアンサー

こんばんは!
質問の操作に関しては関数云々というより、コツコツ手を動かして操作するしかないと思います。
(1)2行目データを範囲指定 → 右クリック → コピー
(2)A3セルを選択 → 右クリック → 形式を選択して貼り付け → 「行列を入れ替える」にチェックを入れOK
(3)Ctrlキーを押しながら斜線を入れたいセルを選択 → 右クリック → セルの書式設定 → 「罫線」タブで「右下がりの斜線」を選択しOK
(4)最後にA2セル~最終セルを選択 → 罫線の「格子」を選択しOK

こういった流れになると思います。

これを自動で!というコトであればVBAになってしまいますが、一例です。
表を作成したい元データはB2セルから列方向に並んでいるとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim j As Long, lastCol As Long
lastCol = Cells(2, Columns.Count).End(xlToLeft).Column
Range(Cells(2, "B"), Cells(2, lastCol)).Copy
Range("A3").PasteSpecial Paste:=xlPasteAll, Transpose:=True
For j = 2 To lastCol + 1
Cells(j, j - 1).Borders(xlDiagonalDown).LineStyle = xlContinuous
Next j
With Range("A2").CurrentRegion
.Borders.LineStyle = xlContinuous
.HorizontalAlignment = xlCenter
End With
End Sub 'この行まで

※ おそらく一度だけの操作になると思いますので、
わざわざマクロでやるよりご自身で手を動かした方が良いと思います。m(_ _)m

こんばんは!
質問の操作に関しては関数云々というより、コツコツ手を動かして操作するしかないと思います。
(1)2行目データを範囲指定 → 右クリック → コピー
(2)A3セルを選択 → 右クリック → 形式を選択して貼り付け → 「行列を入れ替える」にチェックを入れOK
(3)Ctrlキーを押しながら斜線を入れたいセルを選択 → 右クリック → セルの書式設定 → 「罫線」タブで「右下がりの斜線」を選択しOK
(4)最後にA2セル~最終セルを選択 → 罫線の「格子」を選択しOK

こういった流れになると思...続きを読む

QExcel VBA 組み合わせパターン

A1~A5 に、順に 「あ」「い」「う」「え」「お」が入っています。

B1に「3」を入れたとき
C1以降、各セル1文字ずつで、

あああ
ああい
ああう
…(略)
おおえ
おおお

といった具合に表示させたいのです。
VBAで簡単にできるでしょうか。

※A列のデータ数は変動します。

Aベストアンサー

Sub test()
n = Range("A1").End(xlDown).Row
m = Cells(1, 2).Value
For i = 1 To n ^ m
k = i - 1
For j = m To 1 Step -1
Cells(i, j + 2).Value = Cells(k Mod n + 1, 1).Value
k = k \ n
Next
Next
End Sub

Q組み合わせパターンについて

質問です!

ExcelのA1からG1のセルに、1から7の数字が入力されています。
A1が1、B1が2・・・G1が7
そこから異なった5つを選びセットを作りたいです。
21通りあることが分かるのですが、全てのパターンをExcelで抽出したいです。

よろしくお願いします。

Aベストアンサー

No.2です!
補足に
>順不同でも同じ数字の組み合わせは表示されないようにしたいのです。
とありましたので・・・

「順列」を選択して実行されていませんか?

「組合せ」を選択 → 「標本セル範囲」をクリック → A1~G1を範囲指定 → 
「リスト開始セル」をクリック → 表示開始セルを選択 → 「抜き取り数」で「5」を選択 → 実行

これで重複なしで21種類のデータが表示されると思います。

これでもダメならごめんなさいね。m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング