プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者です。

区分ごとの管理番号を採番(4ケタ、0パディング)できる様に関数を使った処理も考えましたが、ファイルサイズやワークシートをシンプルにするためVBAで処理したいのです。
(実行ボタン押下による処理)

管理番号:A列
案件名:B列
区分:C列

管理番号 案件名 区分
---------------------------------
a0001  案件1  a
b0001  案件2  b
c0001  案件3  c
a0002  案件4  a
a0003  案件5  a
b0002  案件6  b
a0004  案件7  a
c0002  案件8  c

関数で採番する際は以下の様な数式を考えていました。

=IF(C2="a","a"&RIGHT(COUNTIF(C$2:C2,"a")+10000,4),IF(C2="b","b"&RIGHT(COUNTIF(C$2:C2,"b")+10000,4),IF(C2="c","c"&RIGHT(COUNTIF(C$2:C2,"c")+10000,4),"")))

御教示よろしくお願いします。

A 回答 (2件)

こんな感じでしょうか


Sub ボタン1_Click()
For i = 2 To Range("C" & Rows.Count).End(xlUp).Row
Range("A" & i).Value = Range("C" & i).Value & Right("000" & WorksheetFunction.CountIf(Range("C2:C" & i), Range("C" & i).Value), 4)
Next
End Sub
    • good
    • 2
この回答へのお礼

これです! これです!! 求めたいたものは!!!
関数でもVBAでもスッキリと書くには相応のスキルが必要と
痛感しました。
大変勉強になりました。
ありがとうございます。

お礼日時:2015/11/07 17:38

= C2&RIGHT(COUNTIF(C$2:C2,C2) +10000,4)


これで動くと思います
VBA使うほうが複雑な気がするので
    • good
    • 1
この回答へのお礼

ここまで数式がスッキリできるとは!!!
IF文を使うとの固定観念が強かったので、目からウロコです。
確かにVBAの方が複雑かも・・・
大変勉強になりました。
ありがとうございます!!!

お礼日時:2015/11/07 17:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A