2016-08-04 11 views
-4

私は自分のSKU番号を自動化しようとしています。私は3列あります。最初の列は28で、2番目の列は6で、最後の列は58です。Do While Loop for SKU番号

私はSKUが置き換え次いで、第1および第2のdo-whileループを削除し、私は質問へのコメントで述べたように私のコードは、この

Sub SKU() 
    Dim x As Long 
    x = 1 
    i = 1 
    j = 1 
    k = 1 
    Do While Cells(i, 1) <> "" 
     Do While Cells(j, 2) <> "" 
      Do While Cells(k, 3) <> "" 
       Cells(x, 4).Value = Format(0, "0") & Format(i, "000") & _ 
       Format(j, "00") & Format(k, "00") & Format(0, "0") 
       k = k + 1 
       x = x + 1 
      Loop 
      j = j + 1 
     Loop 
     i = i + 1 
    Loop 
End Sub 
+0

私の結果ですところで – OverBakedToast

+3

あなたの質問は何であるKループを過ぎてきませんか? (どの部分が期待どおりに機能しないのですか?)あなたのデータはどのように見えますか?あなたの希望する出力は何ですか? –

+0

第1と第2の 'do-while'ループを削除し、あなたの行を次のように置き換えます:' Cells(k、4).Value = Format(Cells(k、1)、 "0")&Format(Cells(k、2)、 "000")&書式(セル(k、3)、 "00") 'すべてがOKです。 –

答えて

1

必要はありません。最後の行を見つけ、Forループを使用します。

これはあなたの試みですか? 28,6,58ため

Sub Sample() 
    Dim ws As Worksheet 
    Dim lRow As Long, i As Long 

    '~~> Change this to the relevant sheet 
    Set ws = ThisWorkbook.Sheets("Sheet2") 

    With ws 
     '~~> Find last row 
     lRow = .Range("A" & .Rows.Count).End(xlUp).Row 

     For i = 1 To lRow 
      If .Cells(i, 1) <> "" And .Cells(i, 2) <> "" And .Cells(i, 3) <> "" Then 

       '0{(###)col1}{(##)col2}{(##)col3}0 
       .Cells(i, 4).Value = "'0" & _ 
            Format(.Cells(i, 1), "000") & _ 
            Format(.Cells(i, 2), "00") & _ 
            Format(.Cells(i, 3), "00") & _ 
            "0" 
      End If 
     Next i 
    End With 
End Sub 

出力は002806580

+0

'for-next'ループを使うのが良い選択肢です;) –

1

のように見えるので、0{(###)col1}{(##)col2}{(##)col3}0

のような傾向を持つようにしたいです。

Cells(x, 4).Value = Format(0, "0") & Format(i, "000") & _ 
      Format(j, "00") & Format(k, "00") & Format(0, "0") 

と:

Cells(k, 4) = "'" & Format(Cells(k, 1), "000") & _ 
      Format(Cells(k, 2), "00") & Format(Cells(k, 3), "00") 

結果:あなたは先頭と終わりにゼロを追加したい場合は0280658

Cells(k, 4) = "'0" & Format(Cells(k, 1), "000") & _ 
      Format(Cells(k, 2), "00") & Format(Cells(k, 3), "00") & "0" 

結果:Doループを使用する002806580

+0

++素敵なもの:)私は彼があなたの投稿の最後のものを必要としていると思う。 –