• ベストアンサー

A~H 4桁 組み合わせパターン 全件リスト

A, B, C, D, E, F, G, Hのうち4桁(桁数固定, 文字重複可)の組み合わせパターンをExcelなどでリスト化する方法を教えてください。 例 AAAA ABCD

質問者が選んだベストアンサー

  • ベストアンサー
  • M_Sato
  • ベストアンサー率54% (550/1003)
回答No.4

AからHまでの8文字ですから、数字に置き換えれば、0から7までです。 ですから八進法の0000から7777まで(十進法の0から4095)まで、縦にセルを埋めて、0→A、1→Bと置換していけば、リストが出来上がります。 具体的にには 1)A1に0を入力 2)B1に=DEC2OCT(A1)の式を入力(八進法表示) 3)C1に=TEXT(B1,"0000")の式を入力(頭を0で埋めた文字列に変換) 4)A列を0から4095まで埋める 5)B列・C列の式を下にコピー 6)C列のすべての値(式ではない)をD列にコピー 7)置換機能でD列の数字をアルファベットに8回全置換する。   0→A、1→B、2→C、3→D、4→E、5→F、6→G、7→H

warabinjp
質問者

お礼

シンプルな操作で目的のリストが作れました。 ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

8文字のうち4つを取り出し、その組み合わせは=COMBIN(8,4)  で70 その各々の4文字の1組に対し、AAAAのような組み合わせも許すのだから、=4*4*4*4のバリエーション(組み合わせ)があって =G1*256で 17920 通りあるのでは。 ーー >8文字のうち4つを取り出しの、具体例は(このパターンの質問が多い)エクセルシートのセルに打ち出す場合、 ここの質問や、WEB記事にVBAコードが見つかり、 https://oshiete.goo.ne.jp/qa/3063237.htmlのベストアンサーにもあります。 再帰処理というロジックを使っている例です。 === 以下標準モジュールに、 Const nStr As String = "ABCDEFGH" '←n個の文字列 Const m As Integer = 4 '←取り出す個数 Dim n As Integer '←ご質問文のn Dim rStr As String '←m個取り出した文字列を結合したもの Dim mRow As Integer '←エクセル表へ書き出す際の行番号 Dim Nest As Integer '←再帰呼び出しの深さ=rStrの何文字目に取り出すのか '----------------------- Sub combi() n = Len(nStr) 'nStrの文字列長をnに代入 If m > n Then Exit Sub 'nよりmが大きければ終了 rStr = String(m, " ") 'rStrにm個の空白を代入 Cells.ClearContents '書き出す表をクリア mRow = 0 '書き出す行番号0クリア Nest = 0 '再帰呼び出し深さ0クリア combiPr (0) 'サブルーチン combiPr を引数0で呼び出し End Sub '----------------------- Sub combiPr(n1) 'サブルーチン開始 引数はその時点での開始位置(nStrの何文字目まで処理したか) Dim mCol As Integer '←エクセル表へ書き出す際の列番号 For nn = n1 + 1 To n - m + Nest + 1 'nnを開始位置の次の文字から始めて残りの文字数の手前までFor~Nextを繰り返す Nest = Nest + 1 '再帰呼び出しを1カウントアップ Mid(rStr, Nest, 1) = Mid(nStr, nn, 1) 'rStrのNest番目にnStrのnn番目を代入 If Nest = m Then 'rStrに取り出したのがm文字目なら mRow = mRow + 1 'エクセル表の次の行へ For mCol = 1 To m 'rStrの1文字目からm文字目まで書き出す。 Cells(mRow, mCol).Value = Mid(rStr, mCol, 1) Next Else 'そうでなければ、つまり現在の開始位置(=nStrの何文字目まで処理したか)がm個まで達してなければ Call combiPr(nn) '現在の到達位置(nStrの何文字目まで処理したか)にnnをセットしてcombiPrを呼び出す(再帰呼び出し) End If Nest = Nest - 1 '再帰呼び出しを1後退 Next End Sub を実行すると、70行の結果が返りました。行が多いので掲載略。 =COMBIN(8,4)  での70という結果と一致してますので正しいでしょう。 === あとそれぞれの(上記結果の各行の、各列4セルの)4文字について、第1桁には第1文字4個(4種)、第2桁には第1文字4個(4種)、第3桁には、第3文字4個(4種)、第4桁には第4文字4個(4種)の組み合わせをForNextの繰り返しで、結果の4セル分のパターンを作ればよいと思う。 ==== こういうのはVBA(プログラムで処理)が普通と思うが。 既に出ているご回答と数が違うようなので心配。 この分野(順列・組み合わせ)の勉強が、小生十分でないのでとりあえずここで止めます。

  • SI299792
  • ベストアンサー率48% (713/1474)
回答No.2

すみません G迄と勘違いをしていました。 A1: =CONCAT(CHAR(MID(BASE(ROW()-1,8,4),ROW($1:$4),1)+65)) A4096 迄コピペ。

  • SI299792
  • ベストアンサー率48% (713/1474)
回答No.1

A1: =CONCAT(CHAR(MID(BASE(ROW()-1,7,4),ROW($1:$4),1)+65)) Excel2019 の場合、Ctrl+Shift +Enter で配列数式数式にします。(数式に{}が付きます) A2401 迄コピペ。 (7^4=2401です) Excel2016 以前では使えません。補足に書いていただければ、2016以前の数式を上げます。

関連するQ&A

  • 数字の組み合わせパターンの取得について

    a組 1,2,3,4,5,6,7,8,9 b組 1,2,3,4,5,6,7,8,9 c組 1,2,3,4,5,6,7,8,9 上記のような各組から、それぞれ1つずつ番号を選択し 出来上がる組み合わせパターン全てを取得したいのですが どうしてもうまく取得できません。 各組の番号の重複はしないように取得したいので 9*8*7=154の組み合わせ全てを取得したいです。 (計算合ってますかね・・・) 例○:1,2,3 2,1,3 ・・・ 例×:1,2,1 2,4,4 ・・・ 質問も初めてなので、書き方など不明な点や不手際があれば あわせてご回答いただけると感謝です。

    • ベストアンサー
    • PHP
  • ナンバーズ4の各桁の合計数がNのときの組み合わせの数

    ナンバーズ4についての質問です。 ナンバーズ4の各桁を合計した値をNとします(0≦N≦36、Nは自然数)  ⇒ナンバーズ4は0000~9999の中から数字を選択するため 各桁の合計値がNのときにナンバーズ4の組み合わせは 何パターンあるのか求める方法を教えてください。 例)N=0のときは0000の1パターン   N=1のときは0001 0010 0100 1000の4パターン これを上記のようなアナログなやり方ではなく 数式で求めたいのです。 よろしくお願いいたします。

  • ACCESSでオートナンバーを任意の書式で付けたい

    ACCESSで新規レコードを入力時にオートナンバーが自動的につく入力フォームを作りたいと思っています。 その際、特定の文字列+桁数固定のオートナンバーという形になるようにするにはどうすればいいか教えていただけませんでしょうか。 (例)H125-00001 H125-までは固定で、00001の5桁(桁数固定)がオートナンバーでUPしていくようにしたい。 H125-00001→H125-00002→H125-00003・・・といった感じです。 宜しくお願いいたします。

  • セルの値が同じ行を条件に従って行削除するマクロ

    A~E列までデータがあり 行数は約30,000行あります。 A列は半角英数字と-で桁数は11桁又は14桁です。 数字のみもあれば数字と英字の組み合わせもあります。 (英字はどこの桁にあるか何個あるかは不規則です) 例 ABCD123456789X 124345678901234 55555-55555 ABC12345DEF678 E列には半角の 1 か 2 しかありません。 A列が同じ値の行を検出して重複している行は1行だけ残して 後は行削除をしたいです。 行削除はE列の値によって判定したいです。 重複行は1つの値に対して何行あるか不明です。 30,000行のうち、重複行を削除すると10,000行くらいになる予定です。 (1)重複行にてE列の値が1だけの場合    どれでもいいので1行残して残りは行削除 (2)重複行にてE列の値が2だけの場合   どれでもいいので1行残して残りは行削除 (3)重複行にてE列の値が1も2もある場合   E列の値が2の行をどれでもいいので1行残して残りは削除 例 (1) 1234567890XXXX-1 1234567890XXXX-1 1234567890XXXX-1 ↓ 1234567890XXXX-1 (2) 123ABCDE901234-2 123ABCDE901234-2 ↓ 123ABCDE901234-2 (3) 12345678901234-1 12345678901234-2 ↓ 12345678901234-2 ABC45678901234-1 ABC45678901234-2 ABC45678901234-1 ABC45678901234-2 ↓ ABC45678901234-2 手作業では5時間かかりましたがミスだらけです。 まだ数ファイル残っており手作業では厳しいのでマクロを 作成したいのですが、どう記述していのかまったく検討が付きません。 どうかよろしくお願いします。

  • 円マークを自動で表示するには

    請求書において シート1で押印及び合計金額 シート2で明細、計、消費税、合計 が表示されている状態です。 シート1の合計金額の部分は1桁1セルになっており(指定請求書がそういう形式の為変更できません) =(MID(RIGHT(" "&シート2!E32,1),1,1)) 以下同様 =(MID(RIGHT(" "&シート2!E32,6),1,1)) として各セルに1桁づつシート2の合計からとりだして記入している現状です A1|B1|C1|D1|E1|F1|G1|H1 (セル) 無|¥|6|5|4|3|2|1 (桁数) しかし、7桁目が入ったり入らなかったりするので合計をいつものつもりで6桁でいると1桁足らない請求になってしまいます。 常にチェックすればいいのですが、 if等を用いて シート2の合計の7桁目に数字が入っていれば数字を、入っていない場合は”¥”をとしたいのですが、うまくいきません。 =IF((MID(RIGHT(" "&シート2!E32,7),1,1))>0,(MID(RIGHT(" "&シート2!E32,7),1,1)),"\") としても7桁目にはなにかあると判断されているようでうまくいきません。 シート2の合計に\がないので認識できないのだと思いますが、 A1|B1|C1|D1|E1|F1|G1|H1 (セル) 無|無|6|5|4|3|2|1 (桁数) となってしまいます。 7桁目が無い場合 A1|B1|C1|D1|E1|F1|G1|H1 (セル) 無|\|6|5|4|3|2|1 (桁数) 7桁目が有る場合 A1|B1|C1|D1|E1|F1|G1|H1 (セル) \|7|6|5|4|3|2|1 (桁数) とするにはどのようにすればよいでしょうか。 わかりにくい解説で申し分けありませんが、お力をお貸しください。

  • Excelでの列比較(A列とB列の組合せ、C列とD列の組合せ)

    はじめまして、Excel初心者です。 現在あるデータを整理しているのですが、文字列の比較について 教えください。 ExcelでA列とB列のデータの組合せと、C列とD列のデータの組合せを 比較したいのですが、どのように行うのがベストでしょうか? Match関数やcountifなどを試しましたが、うまくできませんでした。 ※データ例 | A列 | B列 | C列 | D列 | AAAA BBBB AAAA DDDD

  • 組み合わせのパターンを作成する関数

    組み合わせのパターンを作成する関数を作成したいと思っています。 仕様は以下のような感じです。 引数 ・list:材料となる文字の配列 ・len:作成する文字列の数(2以上) 戻り値 ・組合わせた文字列の配列 例 (["a", "b", "c"], 2)→["aa", "ab", "ac", "ba", "bb", "bc", "ca", "cb", "cc"] (["a", "b"], 3)→["aaa", "aab", "aba", "abb", "baa", "bab", "bba", "bbb"] 私はとりあえず作成する総パターン数(Math.pow(list.length, len))回ループでまわし、indexをtoStrungでn進数にし(ゼロパディングし)、最後に数字と対応する文字を置換するという方法で実装しました。とりあえず動いています。 しかし他にもいろいろなアルゴリズムが考えられそうなので、他の実装・よりよい方法を知りたいと思いまして質問させていただくことにしました。 できれば具体的なコードを教えていただきたいです。 よろしくお願いします。

  • Excel関数

    Excel2010を使用しています。 A~E列 及び H~K列の1,000行目くらいまで、1ケタから5ケタの数字を入力しています。 重複した数字がないか確認したいのですが、適した関数はありますか? (重複していた場合、指定したセルに「重複」と出るような関数など) セルは空欄の場合もあります。 ご教示いただければ幸いです。よろしくお願いします。

  • Excelのセルの数字のみを別のシートのセルに転写

    Excelのセルの先頭に固定した桁数(例として7桁)の半角数字と文字数はフリーの全角の文字を入力し、別のシートのセルに固定した桁数(例として7桁)の半角数字だけを転写する方法を教えてください。

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

    よくこの組み合わせは全部で1万通りのパターンが存在するというようなことを聞きますが、 あれの方程式などはあるのでしょうか。 以下の例で説明をお願いします。 1. [a,b,c]の3つだけの文字列を作った時のパターン数 2. 英数字のみのパスワード4桁のパターン数 3. [a,b,c,d,e,f,g]の中から4文字をつかった文字列のパターン数。

専門家に質問してみよう