今、第1行目に以下のような項目があり、
撮影日 箱番号 撮影場所 タイトル テープ種別
2行目以降の「テープ種別」(=「E」列)に以下のようなデータが
入力されたとします。
L
S
S
S
L
L
S
L
L
L
S
S
L
S
S
S
L
L
S
L
S
S
L
L
L
S
S
S
L
L
S
L
L
L
S
S
L
S
S
S
L
L
S
L
S
S
L
L
この条件下で、以下の「VBA」を実行すると、
Sub Sample()
Dim r, l, n, s, i, u As Integer
Dim m, t As Single
Dim c As String
r = Range("E1").End(xlDown).Row
l = 0: n = 0
s = 0: u = 0
For i = 2 To r
c = Cells(i, 5).Value
If c = "L" Or c = "l" Then
l = l + 1
m = l Mod 10
If m = 0 Then
n = n + 1
Cells(i, 2).Value = "L2013-" & Right("0000" & CStr(n), 4)
End If
ElseIf c = "S" Or c = "s" Then
s = s + 1
t = s Mod 10
If t = 0 Then
u = u + 1
Cells(i, 2).Value = "S2013-" & Right("0000" & CStr(u), 4)
End If
End If
Next i
End Sub
「L」や「S」がそれぞれ10個目ずつの行の「箱番号」(=「B」列)に
以下の内容が自動的に出力されます。
S2013-0001
L2013-0001
S2013-0002
L2013-0002
これが、思っておられる処理に間違いないか分かりませんが…
なお、プログラムが、余りにも美しくありませんが、
ご容赦ください。
最後に、何より、このプログラムでは、
実行するたびに、すでに処理が済んでいる所を(例えばL2013-0001)
何度も書き換えるという、無用なことをしているように思えますし、
何より、このままだと、「L」や「S」を直して、再びプログラムを実行すると、
前の「L2013-0001」という表示が残ったままになってしまうので、
手作業で消しておく必要があります。
そう考えると、余りにも不完全なプログラムですが、、
よかったら、参考にしてください。
お礼
本当にありがとうございました。 書いて下さったプログラム?をこちらのエクセルに貼り付けて、何度もエラーを重ねながら セルの位置の調整を行ったらプログラムが動き数値が目的通り自動入力できました。 ありがとうございました。