• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つのセルの組み合わせ)

VBAを使用したセルの組み合わせによる商品管理番号の作成方法

K Kazz(@JazzCorp)の回答

回答No.2

'データシートで実行(=アクティブシート) '空いているセルなら出力シート=データシートでも構わない '空白セルはスキップ Sub OneWithTwo() Const xName = "Sheet2" '出力シート Const xBase_To = "A2" '出力の基点 Const xBase_From = "B1" 'データの基点 Dim xNum As Long Dim xNum2 As Long Dim jj As Long Dim kk As Long Dim mm As Long Dim mm2 As Long Dim nn As Long Dim xSheet As Worksheet Set xSheet = Worksheets(xName) xSheet.Columns(1).Clear With ActiveSheet nn = 0 mm = Range(xBase_From).Row mm2 = Range(xBase_From).Column xNum=Cells(mm, Columns.Count).End(xlToLeft).Column-mm2+1 For jj = 0 To xNum If (Range(xBase_From).Offset(, jj) <> Empty) Then xNum2=Cells(mm + 1, Columns.Count).End(xlToLeft).Column-mm2+1 For kk = 0 To xNum2 If (Range(xBase_From).Offset(1, kk) <> Empty) Then xSheet.Range(xBase_To).Offset(nn) = Range(xBase_From).Offset(, jj) & Range(xBase_From).Offset(1, kk) nn = nn + 1 End If Next kk End If Next jj End With Worksheets(xName).Select End Sub

makun100
質問者

お礼

回答ありがとうございました。 先の方がありましたので、ベストにはできなかったこと、ご了承ください。

関連するQ&A

  • vba  組み合わせパターン表示

    1,2,3,--,n-1,nからm個とる組み合わせのパターンを セル(1,1)から(nCm、nCm)に表示させる処理をVBAで記述 したいのですが、どうすればいいのでしょうか。 よろしくお願いします。

  • Excelですべての組合せ(重複組合せ)を出力するには?

    Excelですべての組合せ(重複組合せ)を出力するには? 次の条件のような場合、Excelですべての組合せ(重複組合せ)をVBAで出力するにはどうしたらいいのでしょうか? 10種類のお菓子の中から、好きなものを3個選んでセットにするとします。 同じものを複数選ぶのはありですが「菓子A、菓子B、菓子C」と「菓子B、菓子C、菓子A」は選んだ順が違うだけで同じ組合せなので、どちらか片方だけにします。 この場合、すべての組合せの数は Excelの関数で求めることができるようで COMBIN(10+3-1,3) = 220 通りあることまではわかりましたが、このすべての組合せの一覧をどのようにして出力したらいいのかがわかりません。 いろいろ検索した結果、順列という方法は見つかりましたが、重複組合せでの方法は見つけることができませんでした。 また、Accessを使っても似たようなことができるのでしょうか? 直積? できれば、3個固定ではなく5個の場合も出来るとうれしいです。 よろしくお願いします。

  • 同じものを含む順列

    連続する16個の数字から、4つ取り出してその組合せを全て表す処理を作ろうとしています。 まずは意味からと思い、いろいろ検索して調べても、うまく理解できず、最後の手段でここに投稿いたします。 組合せのパターンを割り出すのに、「同じものを含む順列」を使って行うと言われています。 いろいろ調べて混在したものが、意味の違いの点?で、「同じものを含む順列」と「重複順列」とは同じことを表すのでしょうか。 また、「同じものを含む順列」のパターン出力のプログラムを作る必要があり、参考になるサンプルが存在するなら教えていただけないでしょうか。 (順列や組合せは見つかったのですが) 宜しくお願いします。

  • 複数セルの文字列をスマートに連結する方法

    ウィンドウズ7Home Premium 64bit、エクセル2010で、複数セルの文字列をスマートに連結する方法を、ご教授ください。例えば: A1 ABCD A2 EFGH A3 IJKL A4 MNOP A5 QRST A6 UVWX A7 YZ 7セルの文字列を、 A9 ABC...XYZ のように、1つのセルに、文字を連結して表示させる、スマートな方法を、お教えください。 (現在は、手動のコピペで処理しています!) 当方、自称の上級者です。ウィザード、関数、VBAのどの方法でも結構です。 また、セルの数が一定でないため、できれば、範囲選択しての方法がありがたいです。 (Selection) それが不可能なら、VBAのFOR:NEXTで、空白セルでブレークの方法でも。 達人の回答者の方、よろしくお願いいたします。

  • エクセルVBA 変数Aと変数Bの組み合わせに対応する値を返すコード

    ワークシート上に次の表があり,この表をもとにして,変数A(0~4)と変数B(0~4)の組み合わせに対応するC列の値を返すコードは,どう書いたらよいでしょうか。  例えば,変数Aのセルに●(4),変数Bのセルに▲(0)と入力したら,値のセルに■(5)と表示させたいのです。  どなたか教えていただけませんか。 A列  B列  C列  4   0   5  3   1   4  3   0   5  2   2   3  2   1   4  2   0   4  1   3   2  1   2   2  1   1   3  1   0   3  0   4   1  0   3   1  0   2   2  0   1   3  0   0   3 変数A:● 変数B:▲ 値:■

  • For Next 式の結果をセル表示

    Dim i, p  For i = 1 To 9   For p = 1 To 9     Cells(i, i * p).Value = i * p    Next p   Next i  End Sub ↑の式ではA、1~I、9に  結果が出るのですが  その結果を縦にひとつづつ表示したいのです  (たとえばA1~A81へ)  その場合はもうひとつ変数を宣言して  変数に表示したいセルの情報を記入するのですか?  もしくは変数を宣言しなくても可能ですか?    できれば双方のサンプルを教えていただければ  幸いです

  • VBAでセル指定するとき("A1")←半角?

    VBAでセルを指定するとき、 例えばA1のセルを選択するときにRange("A1")と書きますよね。 このときに「A」は半角で入力したのですが、これは全角の「A」でもいいのでしょうか。 実際に全角にしてVBAを組んでも、問題なく処理できました。 ただ「全角にしても問題なく処理できたからいいや」というのではモヤモヤしてしまい、 全角でも問題なく処理できるという記述があるテキストやサイトを探しているのですが 見つかりません。 セル指定するときに全角、半角は関係ないのでしょうか。

  • EXCELVBA 全通りの組み合わせの出力

    はじめまして! VBAの記述の方法が分からず困っています。 過去の質問も検索してみましたが、自分のケースにどうあてはめればよいかわからず・・。 どなたが教えていただけないでしょうか? A1~AK1までそれぞれ1~37までの数字が入力されています。 組み合わせとして、そこから35個の数字を選ぶ場合の全通りを記載したいです。 2行目のA1~AI1までに選んだ35個の数字を出力し、 1行ずつ下にずらしていきたいです。 大変お手数ですが・・・よろしくお願いします・・・

  • EXCEL でセルの大小比較はできますか

    EXCELのVBAで処理を作っているのですが、 その中で、セルのアドレスで大小比較ができたらと思うのですが、可能でしょうか。 条件としては、同じ行内です。 A1などのセルのアドレスを変数Xに入れておいて、  X < Y1 というようなことはできるのでしょうか。 よろしくお願いします。

  • どうやってもFor文を抜けてしまいます…(VBA)

    いつもお世話になっております。 VBAで作業をしていたところ、とある箇所でずっと詰まってしまい、 また皆様のお力を借りたいと思い・・・。 おそらく、基礎中の基礎かもしれませんが、お付き合い頂ければ助かります;; 【質問内容】 Functionが2つあったとします。 現在のFunctionから、別のFunctionに飛んで、また元のFunctionに戻ってきた際に、 Forでループ中でも抜けてしまうのでしょうか? おそらく、何を言ってるか分からないと思いますので、以下にコード例を記載します。 _________________________________ 【コード例】 function sample1() Dim roop as Long ’シート1のCell(7,4)には「100」と入力されており、「roopが2~100」の間ループさせます。 for roop + 2 To sheets("シート1").cells(7,4) 処理2 ’特定条件を満たしたら、「sample2」に飛びます。 if 条件 then call sample2 End If next End function _________________________________________________________________________________________ function sample2() ’sample1()で使用していたroop変数をそのまま使用します for roop + 1 To 50 処理2 roop + 1 next ’処理が終わりsample1()のnextに戻ります。 ’roopには、仮に50が格納されているとします。 End function _________________________________________________________________________________________ 上記のコードとなります。 最初はSample1()で処理を行い、特定条件を満たしたらSample2()に移行。 Sample2()の処理が終わったら、元のSample1()に戻る。 2つのFunction内で使用していた「roop」変数は、まだ80にも関わらず、 Sample1()のFor文を抜けてしまいます。 Sample1()のForのループ条件は「2~100」としていますが、 これは別のFunctionに飛ぶと、無くなってしまうのでしょうか? 何を言っているのか分からないなどございましたら、ご指摘ください・・・;; 以上、よろしくお願いします。