例えば
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
エクセル(勝手に太字になる)
-
PowerPointで表の1つの列だけ...
-
エクセルの表から正の数、負の...
-
エクセルで最初のスペースまで...
-
VBAでセル入力の数式に変数を用...
-
エクセル 文字数 多い順 並...
-
エクセル 時間帯の重複の有無
-
【エクセルの並び替え】末尾の...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 複数列の入れ替えに...
-
EXCELで 一桁の数値を二桁に
-
朝電車で並ばないおばさんがい...
-
お店に入るために行列に並んで...
-
複素数を描けるソフトについて
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
エクセルの並び変えで、空白セ...
-
オートフィルターをかけ、#N/A...
-
エクセル 同じ値を探して隣の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
Excelで半角の文字を含むセルを...
-
エクセル(勝手に太字になる)
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
エクセルの並び変えで、空白セ...
-
「B列が日曜の場合」C列に/...
-
Excel、市から登録している住所...
-
VBAで文字列を数値に変換したい
-
エクセルの表から正の数、負の...
-
エクセル 同じ値を探して隣の...
-
エクセル 時間帯の重複の有無
-
エクセルで、列の空欄に隣の列...
-
文字列に数字を含むセルを調べたい
-
EXCELで 一桁の数値を二桁に
-
エクセルで一行毎、一枚づつ自...
おすすめ情報