- ベストアンサー
エクセル 自動で連番振付
初心者の質問で申し訳ないですが、教えて頂けたら嬉しいです。 エクセルの社員名簿があり、特別教育が修了した順に修了日と修了No.(001~)を入力しているのですが、修了日を入力したら自動で次のNo.を振付けれるようにできないでしょうか。 名簿順で修了していないので飛びとびです。 A(氏名)B(修了日)C(No.) 1aaa yy/mm/dd 001 2bbb 3ccc yy/mm/dd 003 4ddd yy/mm/dd 002 5eee 6fff yy/mm/dd 004 勉強不足、また、つたない文章ですみません。 お分かりになる方、回答よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
NO4です。 前回答ではdeleteキー押下で反応していましたので訂正します。 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Error If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub If Target.Offset(0, -1).Value = "" Then Exit Sub If Target.Value <> "" Then Target.Offset(0, 1).Value = Application.Max(Range("C:C")) + 1 End If Error: End Sub
その他の回答 (4)
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 関数では厳しそうなのでVBAにしてみました。 (1)対象シートのシートタブ上で右クリック→コード表示→以下のコードを貼り付け→alt+F4キー押下 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Error If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub If Target.Offset(0, -1).Value = "" Then Exit Sub Target.Offset(0, 1).Value = Application.Max(Range("C:C")) + 1 Error: End Sub 尚、C列はセルの書式設定をユーザ定義で000として下さい。
お礼
回答ありがとうございます。 できました。目からウロコでした。VBAってすごいですね(;;) VBAの知識皆無ですが、理解できるように頑張って勉強したいとおもいます。 ありがとうございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
- tortue2009
- ベストアンサー率53% (24/45)
素人ですが 書かれている表の場合で (A1:C6セル範囲 項目名なしの時) =IF(B1="","",RANK(B1,$B$1:$B$8,1)) 表示形式は ユーザー定義「000」で いかがでしょう?
お礼
すみません!ちゃんとできました!ありがとうございます。
補足
回答ありがとうございます。 式を試しましたがエラー♯N/Aがでました(;;)
- web2525
- ベストアンサー率42% (1219/2850)
C1に =IF(B1<>"",1,"") C2に =IF(B2<>"",COUNT($C$1:C1)+1,"") 下方向にフィル 表示形式を書式設定で000に設定
お礼
解決しました(^^)ありがとうございました。
補足
回答ありがとうございます。 説明不足でした。すみません。 修了した人順(修了日を入力した順)にNo.をつけれればと思っております。 6fff(No.004)の次に、2bbbが修了。005を振付。のような。 できますでしょうか?
お礼
ありがとうございます(^^)大事にメモして使わせていただきます!