دونا باید گزارشی از فعالیت هایی که در طول روز رخ داده است را در مرکز اعزام خود نگه دارد. وقتی تماسی از طریق رادیو وارد می شود، او باید مستند کند که چه کسی، چه چیزی، چرا، و غیره. او همچنین باید زمان (در قالب 24 ساعته) تماس را مستند کند. دونا در حال حاضر همه این کارها را روی کاغذ انجام می دهد. او می خواهد یک کاربرگ ایجاد کند که بتواند در آن تایپ کند و به محض اینکه متن را در سلول کنار آن ردیف وارد می کند، مهر زمان به طور خودکار پر شود. وقتی سلول کنار آن خالی است، او می خواهد سلول مهر زمانش خالی باشد. به این ترتیب او می تواند در زمان چک کردن ساعت برای نوشتن زمان صرفه جویی کند.
برای حل این مشکل، فرض کنید که می خواهید مهر زمانی به ستون A وارد شود و «چه کسی، چه، چرا» و سایر اطلاعات خود را که از ستون B شروع می شوند وارد کنید. ساده ترین راه برای انجام این کار استفاده از Excel است. میانبر داخلی برای وارد کردن زمان فعلی: Shift+Ctrl+ را فشار دهید. (این نقطه ویرگول است). به شرطی که سلول طوری قالب بندی شده باشد که زمان ها را در قالب 24 ساعته نشان دهد، زمان فعلی را همانطور که می خواهید می بینید.
اگر می خواهید رویکرد خودکارتری داشته باشید، ممکن است فکر کنید که می توانید از یک فرمول ساده در ستون A استفاده کنید، مانند این:
=IF(B2<>"", NOW(), "")
در حالی که اگر سلول مربوطه در ستون B حاوی چیزی باشد، زمانی را وارد ستون A می کند، به دلیل نحوه عملکرد تابع NOW، نتایج رضایت بخشی به دست نمی دهد. به یاد داشته باشید که تابع همیشه زمان جاری را برمی گرداند. بنابراین، هر زمان که کاربرگ دوباره محاسبه شود، محتویات سلول B2 بررسی می شود. اگر چیزی در آنجا وجود داشته باشد، تابع NOW فراخوانی می شود و زمان فعلی محاسبه مجدد را برمی گرداند. این بدان معنی است که زمان نشان داده شده در سلول ستون A حاوی این فرمول همیشه در حال تغییر است. این یک مهر زمانی واقعی نخواهد بود.
با این حال، می توانید فرمول ستون A را کمی پیچیده تر کنید، به این ترتیب:
=IF(B2<>"", IF(A2="",NOW(),A2), "")
اولین باری که این را وارد می کنید، احتمالاً با خطا مواجه می شوید زیرا فرمول دایره ای است. به عبارت دیگر، فرمول به سلولی اشاره می کند که فرمول در آن قرار می گیرد. (در این حالت، فرمول وارد سلول A2 می شود و به سلول A2 نیز اشاره می کند.) برای اینکه این فرمول به درستی کار کند، باید مراحل زیر را دنبال کنید:

شکل 1. ناحیه Formulas در کادر محاوره ای Excel Options.
- کادر محاوره ای Excel Options را نمایش دهید. (در اکسل 2007 روی دکمه Office کلیک کنید و سپس روی Excel Options کلیک کنید. در اکسل 2010 یا نسخه های جدیدتر، تب File را در نوار نمایش داده و سپس روی گزینه ها کلیک کنید.)
- روی Formulas در سمت چپ صفحه کلیک کنید. (شکل 1 را ببینید.)
- مطمئن شوید که کادر بررسی Enable Iterative Calculation انتخاب شده است.
- روی OK کلیک کنید.
اکنون، هر زمان که چیزی را در سلول B2 قرار دهید، زمان به طور خودکار در سلول A2 وارد می شود. با این حال، زمان تنها در صورتی قرار می گیرد که سلول A2 قبلاً خالی بوده باشد. اگر نبود (یعنی قبلاً حاوی یک زمان بود)، محتوای فعلی سلول A2 در جای خود باقی می ماند.
اگر نمی خواهید به مراجع دایره ای اجازه دهید (با روشن کردن محاسبات تکراری)، بهترین رویکرد از طریق یک کلان است. می توانید از رویداد Worksheet_Change برای وارد کردن خودکار زمان در ستون A هر زمان که چیزی در ستون B وارد می شود استفاده کنید.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rInt As Range
Dim rCell As Range
Dim tCell As Range
Set rInt = Intersect(Target, Range("B:B"))
If Not rInt Is Nothing Then
For Each rCell In rInt
Set tCell = rCell.Offset(0, -1)
If IsEmpty(tCell) Then
tCell = Now
tCell.NumberFormat = "mmm d, yyyy hh:mm"
End If
Next
End If
End Sub
برای تنظیم ماکرو، روی برگه کاربرگ راست کلیک کرده و View Code را انتخاب کنید. سپس می توانید ماکرو را در پنجره کدی که نمایش داده می شود قرار دهید. (این ماکرو را در ماژول ThisWorksheet قرار می دهد، که لازم است زیرا یک کنترل کننده رویداد است که هر زمان که چیزی در کاربرگ تغییر کند اجرا می شود.)
ماکرو بررسی می کند تا مطمئن شود چیزی واقعاً در ستون B وارد شده است. اگر چنین است، متغیر tCell روی سلول مربوطه در ستون A تنظیم می شود. اگر از قبل چیزی در آن سلول وجود نداشته باشد، تاریخ و زمان فعلی در آنجا قرار می گیرد. . اگر فقط زمان می خواهید، داخلی ترین قسمت ماکرو را به این تغییر دهید:
tCell = Time
tCell.NumberFormat = "hh:mm"