人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルのマクロについて教えて下さい。
A,B,Cという単語を入力すると、

ABC
ACB
BAC
・・・と
全ての組合せ結果を出すものを作成したいのですが、
(AAAや、AAB、など同じ文字が並ぶものは含まず)

その他に、
A B C
A C B
B A C
・・・と
半角スペースを入れたものも上記のものと別に出力したいのです。

さらに、
A BC
AB C
・・・と
このスペースの有り無しの組合せも別に全て出力したく

最後に例外として、
A

としたものを最後に入れて完成、これらの組合せを全ての結果を、ABCと入れると、出力するものを教えて下さい。

●質問者: surippa20
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● きゃづみぃ
●300ポイント ベストアンサー
Sub main()
 Dim word(3) As String
 Dim e As Long

 word(1) = "A"
 word(2) = "B"
 word(3) = "C"
 
 
  'シートのA列に結果を出力します。
 e = 1
 For a = 1 To 3
 For b = 1 To 3
 For c = 1 To 3
 
 If Not (a = b Or b = c Or a = c) Then
 
 Cells(e, 1) = word(a) & word(b) & word(c)
 e = e + 1
 Cells(e, 1) = word(a) & " " & word(b) & word(c)
 e = e + 1
 Cells(e, 1) = word(a) & word(b) & " " & word(c)
 e = e + 1
 Cells(e, 1) = word(a) & " " & word(b) & " " & word(c)
 e = e + 1
 
 End If
 Next c
 Next b
 Next a
 
 
 For a = 1 To 3
 Cells(e, 1) = word(a)
 e = e + 1
 Next a
End Sub


wordは 好きな文字に変更してください。
word数を 増やす場合は、ループと 空白の分を 増やしてください。

出力結果

ABC
A BC
AB C
A B C
ACB
A CB
AC B
A C B
BAC
B AC
BA C
B A C
BCA
B CA
BC A
B C A
CAB
C AB
CA B
C A B
CBA
C BA
CB A
C B A
A
B
C


きゃづみぃさんのコメント
ループを 分ければ それぞれ 別に出せます。

surippa20さんのコメント
完璧でした。早々にありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ