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

اکسل تعدادی توابع را ارائه می دهد که بسته به محتوای یک سلول، True یا False را برمی گرداند. برای مثال، ISBLANK اگر یک سلول خالی باشد، True را برمی‌گرداند، اگر سلولی حاوی مقدار خطا باشد، ISERR True را برمی‌گرداند، و اگر سلول حاوی متن باشد، ISTEXT True را برمی‌گرداند. ممکن است تعجب کنید که آیا می توان تعیین کرد که یک سلول دارای زمان است یا خیر.

پاسخ کوتاه این است که نه، شما نمی توانید—اکسل هیچ تابعی ندارد که نشان دهد سلول دارای زمان است یا خیر. دلیل آن بسیار ساده است: زمان ها و تاریخ ها در اکسل از نظر فنی چیزی جز اعداد نیستند. تاریخ به هر عددی در محدوده 1 تا 2958465 گفته می‌شود که تاریخ‌های 1/1/1900 تا 12/31/9999 را نشان می‌دهد. اگر یک بخش اعشاری به عدد اضافه کنید، آن زمان نشان دهنده یک زمان است (0 نیمه شب، 0.25 ساعت 6:00 صبح، 0.5 ظهر و غیره است).

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

=IF(AND(CELL("format",B2)>="D6",CELL("format",B2)

این فرمول قالب بندی اعمال شده در سلول B2 را بررسی می کند. اگر قالب‌بندی یکی از فرمت‌های رایج مورد استفاده برای زمان‌ها باشد، متن "Time Format" را برمی‌گرداند. اگر قالب‌بندی متفاوتی استفاده شود، فرمول «فرمت زمان نیست» را برمی‌گرداند.

یک رویکرد متفاوت این است که بررسی کنید آیا مقدار در سلول B2 یک مقدار زمانی معتبر است یا خیر. می توانید با استفاده از فرمولی مانند زیر این کار را انجام دهید:

=IF(TIMEVALUE(TEXT(B2,"hh:mm:ss"))=B2, "Time Entry", "Not a Time Entry")

تا زمانی که سلول B2 فقط یک زمان داشته باشد، عملکرد خوب کار می کند. اگر سلول دارای تاریخ و زمان باشد، تابع همیشه "Not a Time Entry" را برمی گرداند.

برای به دست آوردن بهترین هر دو جهان - بررسی فرمت ها و مقدار موجود در سلول - ایجاد یک تابع تعریف شده توسط کاربر در VBA را در نظر بگیرید. دلیل آن ساده است: VBA شامل تابع IsDate است که نه تنها به محدوده فعلی عدد نگاه می کند، بلکه بررسی می کند که سلول به عنوان یک تاریخ قالب بندی شده است. ماکرو زیر مثالی از نحوه ایجاد چنین تابعی ارائه می دهد:

Function IsTime(rng As Range) As Boolean
    Dim sValue As String
    sValue = rng.Cells(1).Text
    On Error Resume Next
    IsTime = IsDate(TimeValue(sValue))
    On Error GoTo 0
End Function

برای استفاده از تابع، از فرمول زیر در یک سلول استفاده کنید:

=IsTime(B2)

تابع نحوه نمایش مقدار را می خواند (با استفاده از ویژگی متن شی سلول) و سپس سعی می کند آن را با تابع TIMEVALUE تبدیل کند. اگر این یک تاریخ باشد (تعیین شده توسط تابع IsDate)، نمایش یک زمان معتبر است. اگر تاریخ نباشد، VBA خطایی ایجاد می کند که کد برنامه ریزی شده است تا نادیده بگیرد.

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

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
ارسال شده در 27 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 37 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 85 visibility

25.1k سوال

10.4k پاسخ

614 دیدگاه

11.2k کاربر

379 نفر آنلاین
0 عضو و 379 مهمان در سایت حاضرند
بازدید امروز: 42083
بازدید دیروز: 53446
بازدید کل: 20432825
...