|
こんにちは。
>ラベル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
|
|