例えば
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列に並べる方法でもかまいません。
また昇り順でなくてもかまいません。 よろしくおねがいします。
No.1ベストアンサー
- 回答日時:
こんにちは。
学校の宿題とかではありませんよね。
以下は、再帰を使った、順列生成のアルゴリズムです。
たぶん、大丈夫だと思います。後は、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
えっ,し・し・し…宿題… バレたか…
というような歳ではないのですよ,残念ながら。
宿題はイヤですけど,2~3日くらいなら宿題があったころにもどってみたい気もします。
回答ありがとうございました!
8桁までならハングアップすることもなかったです。完璧です。すごい。
No.2
- 回答日時:
過去に似たような質問がありました
(セルを分けていませんが)
http://okweb.jp/kotaeru.php3?qid=1126322
http://okweb.jp/kotaeru.php3?qid=1128457
回答ありがとうございました。
実際に2つとも実験させていただきました。
特に「質問:EXCELのマクロ :再帰的式を使って書き換える」は参考になりました。
JavaScriptの方ではよくお名前を拝見しておりましたが,実は何でもプログラムできる方だったのですね。
今後ともよろしくおねがいします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- その他(コンピューター・テクノロジー) googleスプレッドシートでカッコ内の文字数をカウントしたい 1 2023/01/17 15:52
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Excel(エクセル) Excel 文字列を結合するときに重複をなくしたい 関数・VBA 2 2022/12/12 10:40
- Excel(エクセル) Excelの数字(文字列)合計について あるデータをダウンロードすると、数字データが全て文字列になっ 4 2022/09/26 21:21
- Excel(エクセル) Excelでの列幅設定 1 2023/02/05 14:41
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
【VBA】特定列に文字が入ってい...
-
2つのエクセルのデータを同じよ...
-
エクセルで一行毎、一枚づつ自...
-
エクセルで文字が混じった数字...
-
EXCELで 一桁の数値を二桁に
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
Excelで半角の文字を含むセルを...
-
エクセルのセル内の文字の一部...
-
A列がない・・・A列が非表示に...
-
Excel、市から登録している住所...
-
お店に入るために行列に並んで...
-
エクセルで一列おきに空白列を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセルで、列の空欄に隣の列...
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
文字列に数字を含むセルを調べたい
-
50人を数回、グループ分けする...
おすすめ情報