- ベストアンサー
セル入力時に別のセルに自動で番号を入れたいのですが。
セル入力時に別のセルに自動で番号を入れたいのですが。 例えばA1のセルに数字を入力した時にB1のセルに1を、A2に入力した時にB2に2をという感じで自動で番号を入力し、翌日にA3に投入した時はB3に1から順番に入力されるように設定したいのですが可能でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
作業用シートとVBA、演算式を使います。 A列に入力するのはSheet1、作業用シートはSheet2とします。 Sheet1のワークシートに以下のコードを入れます。 これは、Sheet1のA列に何か入力されるとSheet2の同じアドレスに本日の日付を入れ、A列に空白やスペースが入力されるとSheet2の同じアドレスに空白を入れています。 Private Sub Worksheet_Change(ByVal Target As Range) Dim sData As String Dim r As Range For Each r In Target If r.Column = 1 Then sData = Format(Now(), "YYYY/MM/DD") If Trim(r.Value) = "" Then sData = "" Worksheets("Sheet2").Range(r.Address).Value = sData End If Next End Sub 次に、Sheet1のB1セルに↓の式を入れ、下方向に必要な分だけコピーします。 =IF(TRIM(A1)="","",COUNTIF(Sheet2!A$1:A1,Sheet2!A1)) この式では、作業用シートの日付を見てその日付がいくつ記録されているかを見て番号にしています。
その他の回答 (2)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
詳しいわけではないですが、日付は更新日時を利用してはどうでしょうか? Private Sub Workbook_Open() Dim 更新日時 As Date 更新日時 = Int(ThisWorkbook.BuiltinDocumentProperties("Last Save Time").Value) If 更新日時 <> Date Then リセットする End Sub Option Explicit Dim リセット As Boolean Sub リセットする() リセット = True MsgBox "リセットされました" End Sub VBA初心者なので突っ込みどころがあれば、遠慮なくどうぞ(^^;
お礼
有難う御座いました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
関数ではできないでしょう。マクロを使うことになるでしょうが、B列のデータが今日のデータは1から順に、明日のデータも1から順にというのでは無理ですね。例えば入力の日付の入った上で1から順に番号を付けるなどのことが必要になりますね。
お礼
有難う御座いました
お礼
想像の通りの物が出来ました。有難う御座いました。