ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
31 visibility
موضوع: آفیس توسط:

جیم باید تاریخ را در یک سلول خاص در نیمه شب 14/15 هر ماه (00:00:00 روز پانزدهم) یک ماه پیش ببرد، و او متعجب بود که چگونه می توان این کار را انجام داد.

مانند بسیاری از مشکلات در اکسل، پاسخ به ماهیت داده های مربوطه و دقیقاً آنچه می خواهید انجام دهید بستگی دارد. اگر تاریخ موجود در سلول تاریخ امروز است، و شما به سادگی می خواهید سلول ماه جاری را تا 14 و سپس ماه بعد از آن را نمایش دهد، می توانید از فرمولی مانند زیر استفاده کنید:

=CHOOSE(IF(DAY(NOW())>14,MONTH(NOW())+1,MONTH(NOW())),
"January","February","March","April","May","June",
"July","August","September","October","November",
"December","January")

این فرمول نام یک ماه را برمی گرداند نه تاریخ. اگر ترجیح می دهید تاریخ بازگشتی داشته باشید، می توانید از این فرمول استفاده کنید:

=IF(DAY(NOW())>14,DATEVALUE(IF(MONTH(NOW())=12,1,
MONTH(NOW())+1) & "/" & DAY(NOW()) & "/" & IF(MONTH(
NOW())=12,YEAR(NOW())+1,YEAR(NOW()))),NOW())

هر دوی این فرمول ها زمانی که از دسامبر تا ژانویه پیش می روید، «پایان سال» را محاسبه می کنند. اگر از تابع DATE به جای تابع DATEVALUE استفاده کنید، نسخه کوتاه تری از آخرین فرمول ایجاد می شود:

=DATE(YEAR(NOW()),MONTH(NOW())+((DAY(NOW())>14)*1),1)

این فرمول، برخلاف مثال DATEVALUE، همیشه تاریخی را برمی گرداند که اولین روز هر ماه معین است.

اگر واقعاً می خواهید مقدار یک تاریخ خاص را در یک سلول پیش ببرید، باید از یک ماکرو برای انجام کار استفاده کنید. علاوه بر این، باید مطمئن شوید که ماکرو فقط یک بار در ماه، در یک زمان خاص در یک روز خاص اجرا می شود. به عنوان مثال، اگر می خواهید ماکرو در ساعت 00:00:00 روز 15 هر ماه اجرا شود، باید ماکرو را طوری تنظیم کنید که تاریخ و زمان را بررسی کند و سپس در آن تاریخ و زمان خاص اجرا شود. همچنین باید مطمئن شوید که ورک بوک حاوی ماکرو در آن تاریخ و زمان باز بوده است.

ماکرو زیر تاریخ را از یک سلول دریافت می کند و آن را یک ماه افزایش می دهد. ماکرو فرض می کند که شما یک محدوده با نام، DateCell دارید، که به سلولی که قرار است به روزرسانی شود، اشاره دارد.

Sub IncreaseMonth()
    Dim dDate As Date
    dDate = Range("DateCell").Value
    Range("DateCell").Value = _
      DateSerial(Year(dDate), _
      Month(dDate) + 1, Day(dDate))
End Sub

برای اطمینان از اینکه ماکرو در زمان مناسب اجرا می شود، به ماکروی دیگری نیاز دارید. ماکرو زیر طوری طراحی شده است که هر زمان که ورک بوک باز می شود اجرا شود:

Private Sub Workbook_Open()
If Day(Now) = 14 Then
    Application.OnTime ("23:59:59"), "IncreaseMonth"
End If
End Sub

توجه داشته باشید که این ماکرو خاص روش OnTime را طوری تنظیم می کند که ماکرو IncreaseMonth را در ساعت 23:59:59 روز چهاردهم اجرا می کند. این تاریخ و زمان به این دلیل انتخاب شده است که گرفتن آن راحت تر از ساعت 00:00:00 روز 15 است.

به یاد داشته باشید که ماکرو IncreaseMonth فقط در صورتی اجرا می شود که ورک بوک را در 14 باز کنید و سپس ورک بوک را تا 15 باز بگذارید.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
1 پاسخ 4 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 27 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 30 visibility

25.6k سوال

11.0k پاسخ

614 دیدگاه

11.2k کاربر

156 نفر آنلاین
1 عضو و 155 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 18402
بازدید دیروز: 27875
بازدید کل: 20601614
...