• ベストアンサー

セル入力時に別のセルに自動で番号を入れたいのですが。

セル入力時に別のセルに自動で番号を入れたいのですが。 例えばA1のセルに数字を入力した時にB1のセルに1を、A2に入力した時にB2に2をという感じで自動で番号を入力し、翌日にA3に投入した時はB3に1から順番に入力されるように設定したいのですが可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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)) この式では、作業用シートの日付を見てその日付がいくつ記録されているかを見て番号にしています。

akio0808
質問者

お礼

想像の通りの物が出来ました。有難う御座いました。

その他の回答 (2)

回答No.2

詳しいわけではないですが、日付は更新日時を利用してはどうでしょうか? 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初心者なので突っ込みどころがあれば、遠慮なくどうぞ(^^;

akio0808
質問者

お礼

有難う御座いました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

関数ではできないでしょう。マクロを使うことになるでしょうが、B列のデータが今日のデータは1から順に、明日のデータも1から順にというのでは無理ですね。例えば入力の日付の入った上で1から順に番号を付けるなどのことが必要になりますね。

akio0808
質問者

お礼

有難う御座いました