![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.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
No.3
- 回答日時:
横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](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/a/1235215_5497eb2ac15af/M.jpg)
No.2
- 回答日時:
#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 さん!
変更したい箇所があるので、補足入力しました。
どうか気づいてください・・・><
コードの差し替えのご連絡ありがとうございます。
No.1
- 回答日時:
こんにちは。
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](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/558092_5497e2163ed1a/M.jpg)
この回答への補足
cj_mover さま、ご回答ありがとうございます。
完璧にできました!!
恐れ入りますが追加希望がございまして。
1行目は項目を入れたいので、参照したくありません。
いただいたものを編集してみようと思ったのですが、スキがなくて、わかりません。。。。
2行目以降からスタートという風に書き換えるにはどうすればよろしいでしょうか?
またこの質問に気づいていただけることを祈って。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Excel(エクセル) Excelについて Excel初心者です。 日報に数字を入力する時、誤った数字を入れると、セルが赤く 6 2023/03/31 17:05
- Excel(エクセル) Excelの機能に関してです ドロップダウンリストをB3セルに設定します 元データはB3~B1000 2 2023/07/22 09:20
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
Excelでの全通りの組み合わせ出力方法(文字列)
Excel(エクセル)
-
エクセルで重複しない組み合わせ出力方法
Excel(エクセル)
-
エクセルVBA 全ての組み合わせを作る
Excel(エクセル)
-
-
4
Excelでの全通りの組み合わせ出力方法2
Excel(エクセル)
-
5
Excelですべての組合せ(重複組合せ)を出力するには?
Visual Basic(VBA)
-
6
Excelマクロでのデータ全通り組み合わせ出力方法
Excel(エクセル)
-
7
「○○通りのパターンがある」の計算のしかた
数学
-
8
エクセルで決められた合計になる組み合わせを作成
その他(ソフトウェア)
-
9
エクセルでランダムにチーム分けをしたいです。
Windows Vista・XP
-
10
組み合わせをexcelでマトリクス化したい
教育ソフト・学習ソフト
-
11
Excelでロト6の数字を決めたい
Excel(エクセル)
-
12
エクセルで順列の列挙
Excel(エクセル)
-
13
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
14
エクセルでnCr (組み合わせ)の作成方法
Excel(エクセル)
-
15
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
16
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
17
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
18
複数の数字の組み合わせの中から合計がAになる組み合わせを探す方法
Excel(エクセル)
-
19
EXCELデータのゼロサプレス
Excel(エクセル)
-
20
ExcelVba 有効なセルかどうかを判定するには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFとIFS関数
-
Excelを無料で使うには? パソ...
-
セルの数を求めたい
-
エクセルの数式バーのフォント...
-
Excelの表示についての質問
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
Excelに詳しい方! B列が「日...
-
西暦や和暦の表示をyyyymmdd表...
-
Excelで50個のセルに同じ文字を...
-
Excelの数式について教えてくだ...
-
Excel VBAで全ての矢印を赤色に...
-
エクセル関数を使って
-
祝日と土曜、日曜の合計をカウ...
-
xlsxファイルを保存する際にPDF...
-
Excelについて
-
エクセルVBA、別ブックへ転記す...
-
エクセルで「ページレイアウト...
-
2列に入っているデータを1列...
-
【ExcelVBA】名前を付けて保存→...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報