|    | 
     こんにちは。 
 
>ラベルNoは、日付+商品番号+番号 
 
商品番号??? 
 
前回も今回も商品番号は、一番はじめ10000、新しいものが出ると20000、 
次は30000となっているようですが・・・。 
 
商品番号の一覧がどこかにあるのであれば、VLOOKUP関数やMATCH関数、FIND関数 
などを使って、番号を参照する必要があります。 
 
 
いろいろとやってみて、一応できたのですが、課題があります。 
課題が解決できないときは、捨てて、識者の回答をお待ちください。 
 
 
=前提= 
 ◎A列の書式はは、文字列にしてください。(マクロではしていません) 
 ◎C列の書式は、数値にしてください。(〃) 
 ◎商品番号は、前回と同じように10000、20000、30000・・・としています。 
 
=課題= 
 このままで行くと2010年になると使えなくなります。 
 (いろいろ考えたのですが、すみません) 
 
 
以下コードです。ジーとモジュールに貼り付けて試してください。 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
  Dim myNO As Double 
   
  Application.ScreenUpdating = False 
  With Target 
   If .Count > 1 Then Exit Sub 
   If IsEmpty(.Value) Then Exit Sub 
   If Not Application.Intersect(Target, Range("C:C")) Is Nothing Then 
    Application.EnableEvents = False 
    If .row = 2 Then 
     myNO = CDbl(Format(Date, "yymmdd") & "10001") 
     .Offset(, -1).Value = 1 
    End If 
    
     
    For i = .row - 1 To 2 Step -1 
      If Cells(i, "C").Value = .Value Then 
       .Offset(, -1).Value = Cells(i, "B").Value + 1 
       myNO = CDbl(Format(Date, "yymmdd") & Mid$(Cells(i, "D"), 6) + 1) 
       Exit For 
      Else 
       .Offset(, -1).Value = 1 
       myNO = CDbl(Format(Date, "yymmdd") & _ 
       Int((Mid$(Application.Max(Range("D:D")), 6) _ 
       / 10000) + 1) * 10000 + 1) 
 
      End If 
    Next 
    
    .Offset(, -2).Value = Format(.row - 1, "00000") 
    .Offset(, 1).Value = myNO 
    
    Application.EnableEvents = True 
   End If 
  End With 
  Application.ScreenUpdating = True 
 
End Sub 
 
 | 
     
    
   |