جلوگیری از ورود داده تکراری در اکسل

جلوگیری از ورود داده تکراری در اکسل
۴.۹/۵ - (۱۲ امتیاز)

ورود داده تکراری مشکل مهم در ورود اطلاعات

وقتی که داریم داده در اکسل وارد میکنیم یا فرمی تهیه کردیم که سایر افراد از طریق اون داده وارد دیتابیس اکسل بکنند، لازمه که یک سری کنترل هایی روی ورود داده انجام بدیم که داده ها به درستی در بانک اطلاعاتی ذخیره بشن. مثلا بهتره که کنترلی روی ستون مربوط به کد ملی ایجاد کنیم که هر بار چک بکنه که آیا کد ثبت شده ۱۰ رقم هست یا نه. یا مثلا عددی رو در بازه مشخصی داریم ثبت میکنیم، بهتره که کنترلی روی اون ستون داشته باشیم که داخل بازه بودن عدد وارد شده رو چک کنه و اگر در بازه مورد نظر نبود، هشدار بده یا اینکه از ورود اطلاعات تکراری جلوگیری کنه.

هر گاه بخوایم روی ورود داده ها در اکسل از این قسم کنترلها ایجاد کنیم، میتونیم از ابزار Data Validation استفاده کنیم. ابزار data Validation در واقع کمک میکنه به اینکه داده صحیح و سالم و استاندارد در دیتابیس وارد بشه و از ورود داده های ناصحیح جلوگیری میکنه.

جلوگیری از ورود داده تکراری در اکسل از مسائل پر کاربرد به حساب میاد. برای این موضوع یک راه حل ترکیبی ارائه میکنیم. در واقع فرمول نویسی در ابزار Data validation  راه حل ترکیبی است که باید مورد استفاده قرار بگیره.

برای این کار باید در دیتاولیدیشن فرمولی بنویسیم که تشخیص بده رکورد فعلی که داره ثبت میشه در محدوده بالای سرش وجود داشته یا نه (در واقع محتوای سلول فعلی در محدوده بالای سرش شمرده بشه، اگر تعدادش بیش از ۰ بود، یعنی در محدوده بالا تکرار شده. پس نباید اجازه ثبت رکورد مورد نظر داده بشه).

برای درک بهتر این موضوع به مثال زیر دقت کنید.

فرض کنید میخواهیم در ستون A کد محصول وارد کنیم و در صورتیکه کد محصول تکراری ثبت کردیم خطا بده و اجازه ثبت داده تکراری رو به ما نده.

مطابق شکل ۱ روی سلول A2 کلیک کرده و از تب Data گزینه Data Validation رو میزنیم.

جلوگیری از ثبت داده تکراری

شکل ۱- جلوگیری از ثبت داده تکراری

از قسمت Allow گزینه Custom رو انتخاب میکنیم و فرمول زیر رو در قسمت Formula می نویسیم. (مطابق شکل ۲)

=Countif ($A$1:A1 , A2) <1

در واقع معنی این فرمول اینه که: به داده ای اجازه ثبت بده که تعدادش در محدوده بالای سرش کمتر از یک (یعنی صفر) باشه.

نوشتن فرمول Countif در ابزار Data Validation

شکل ۲- نوشتن فرمول Countif در ابزار Data Validation

در قسمت Error Alert هم میتونیم پیام هشدار رو تنظیم کنیم. مثلا بنویسیم: شما مجاز به ثبت داده تکراری نیستید. برای این کار مطابق شکل ۳ عمل میکنیم:

تنظیم پیام خطا در صورت ثبت داده تکراری

شکل ۳- تنظیم پیام خطا در صورت ثبت داده تکراری

بعد از زدن OK کافیه ولیدیشن رو روی بقیه سلولهای مورد نظر اعمال کنیم. برای این کار سلول A2 را کپی کرده و محدوده A3:A13 رو انتخاب کرده و از پنجره Paste Special (Ctrl+Alt+V) گزینه Validation رو انتخاب میکنیم.

حالا اگر داده تکراری ثبت کنیم، پیام خطا مشابه شکل ۴ نمایش داده خواهد شد.

نمایش پیام هشدار در صورت ثبت داده تکراری

شکل ۴- نمایش پیام هشدار در صورت ثبت داده تکراری

سوال: فرمول دیگه ای که بتونه جلوگیری از ورود داده تکراری در اکسل رو انجام بده میتونید ارائه بدید؟

پاسخ رو در ادامه همین پست و در قالب کامنت ثبت کنید.

این کار با استفاده از افزونه Kutools در اکسل هم قابل انجام هست.

دانلود فایل اکسل این آموزش

برای دریافت فایل اکسلی که در این آموزش ایجاد شده روی لینک زیر کلیک کنید:

آواتار
182

فارغ التحصیل لیسانس مهندسی صنایع، ارشد مدیریت صنعتی از دانشگاه تربیت مدرس و عاشق اکسل هستم. از سال 1388 که ترم 2 لیسانس بودم، به توصیه استاد مشاورم شروع به خوندن اکسل بصورت حرفه ای کردم و همچنان در حال مطالعه و یادگیری و البته آموزش به بقیه هستم.

دیدگاه کاربران
  • محمد ۱۸ اردیبهشت ۱۳۹۸ / ۷:۱۱ ب٫ظ

    سلام. خسته نباشید خانم خاکزاد. در یک ستون که نمایشگر ماههای مختلف است که به ازای هر یک از این ماه ، در ستون بعدی روزهای کاری به صورت تاریخ اومده و در ستونهای بعدی، اطلاعاتی در این خصوص در اون روز کاری مربوطه وجود دارد. کاری که می خواستم انجام بدم اینه که بدون VBA که با فرمول، هر بار که یک ماه به خصوص رو فیلتر می کنم، اختلاف تاریخ اولین روز کاری اون ماه، با آخرین روز کاری اون ماه، رو حساب کنم که برای هر ماه این مقدار متغیره. دستور محاسبه تاریخ رو نوشتم و مشکلی ندارم، فقط نمی دونم چطور به فرمول تاریخ بفهمونم که در آرگومان تاریخ مبدا به اولین سطر که معرف اول روز کاری و در تاریخ مقصد به آخرین سطر که مبین آخرین روز کاری است مراجعه کنه؟؟ به طور کلی دستور و اقدامی مشابه ۹)subtotal می خواستم با این تفاوت که به وقتی یک ماه را فیلتر می کنیم جای جمع اون ماه، عمل انتخاب ۲ سلول ابتدایی و انتهایی در سولهای آشکارشده را انجام دهد

    • آواتار
      حسنا خاکزاد ۱۹ اردیبهشت ۱۳۹۸ / ۹:۳۴ ق٫ظ

      درود بر شما
      برای انتخاب سلول، باید کد نویسی کنید
      اگر سوال اینه که با هر بار فیلتر کردن، سلول اول و اخر انتخاب بشه

  • علی ۱۰ اردیبهشت ۱۳۹۸ / ۹:۵۰ ق٫ظ

    سلام
    من میخوام روزی یه بار فقط داده تکرای ثبت بشه
    منظور هر ۲۴ ساعت یتونم داده تکراری وارد کنم و دیگه نتونم تا فردا
    آیا راهی برای این امر هست؟

    • آواتار
      حسنا خاکزاد ۱۰ اردیبهشت ۱۳۹۸ / ۱۲:۲۱ ب٫ظ

      درود بر شما
      باید یک ستون داشته باشید که هر روز رو نشون بده و بعد بیاریدش توی شرط countif

  • احمد حبیبی ۱۷ اسفند ۱۳۹۷ / ۲:۱۰ ب٫ظ

    سلام خانم مهندس چطور میتونم تو vba جلوگیری کنم از ورود اطلاعات ؟؟ ممنونم میشم پاسخ بدید

    • سامان چراغی ۱۷ اسفند ۱۳۹۷ / ۸:۱۳ ب٫ظ

      سلام،
      میتونید شیت رو پروتکت کنید که این کار با VBA هم انجام شدنی هست.
      راه دیگه اینه که در رویداد Change عبارت زیر رو قرار بدید:

              Application.EnableEvents = False
              Application.Undo
              Application.EnableEvents = True
      
  • دکتر بهرام جباری ۲۴ دی ۱۳۹۷ / ۴:۲۷ ب٫ظ

    سرکارخانم خاکزاد
    سلام
    امکان ریموت توسط شما هست که مشکل بنده حل بشه ….لطفا؟؟؟؟؟؟

    • آواتار
      حسنا خاکزاد ۲۵ دی ۱۳۹۷ / ۹:۱۱ ق٫ظ

      خیر
      داخل گروه تلگرامی که لینکش در فوتر هست مطرح کنید. فایل بذارید. مشکل رو بپرسید. دوستان زیادی پاسخگو هستن

      موفق باشید

  • دکتر بهرام جباری ۲۴ دی ۱۳۹۷ / ۱۱:۰۳ ق٫ظ

    سلام خانم پاکزاد و آفرین بر شما ، شما مایه افتخار و مباهات ما هستید
    جسارتا سوالی داشتم از حضورتون
    من تازه علاقه مند به اکسل و نمودارهاش شدم ، فلذا میخوام نمودار هیستوگرام ترسیم کنم بدین ترتیب که موارد تکراری رو یکی کنه تو نمودار بطور مثال مهر ۱۰۰۰ ، آبان ۱۵۰۰ ، آذر ۱۲۵۰ و دورباره مهر ۱۳۰۰ ولی میخوام تو نمودار یدونه مهر رو با مبلغ جمع کل ۲۳۰۰ نمایش بده
    آیا این امکان وجود داره
    ممنون میشم راهنمایی بفرمایید
    متشکرم
    دکتر بهرام جباری ۰۹۹۰۰۹۹۴۸۹۳

  • امیر ۲۰ مهر ۱۳۹۷ / ۱۲:۱۲ ب٫ظ

    سلام و خسته نباشید
    چجوری میشه توی چند کاربرگ یک ستون مشخص رو محدود کرد که از داده تکراری جلوگیری کنه؟ مثلا من ۱۰۰ تا کاربرگ دارم که میخوام ستون F رو توی همشون جلوگیری کنم از داده تکراری .یعنی عددی را که در ستون F هر کدوم از کاربرگها وارد میکنم خودش همه کاربرگهای دیگه رو چک کنه و از تکرارش جلوگیری کنه.ممنون میشم کمکم کنین

    • سامان چراغی ۲۴ مهر ۱۳۹۷ / ۹:۳۸ ب٫ظ

      سلام
      متأسفانه امکان اینکه یکدفعه همه شیت ها رو انتخاب کنید و روی همشون Data Validation بزنید وجود نداره. برای همین شما دو راه دارید (البته ممکنه راه های دیگه هم باشه که الان به ذهنم نرسیده باشه):
      ۱- با استفاده از فرمول نویسی در بخش Custom ابزار Data Validation برای هر شیت این محدودیت رو ایجاد و به شیت های دیگه منتقل کنید.
      ۲- با استفاده از VBA می تونید در رویداد Change هر شیت این محدودیت رو ایجاد کنید.
      پیشنهاد میکنم یک شیت Template بسازید که در ستون F اون Data Validation رو زده باشید و هر بار اون شیت رو اضافه کنید و ازش استفاده کنید.

  • morteza2328 ۳ مهر ۱۳۹۷ / ۰:۰۶ ق٫ظ

    سوال: فرمول دیگه ای که بتونه جلوگیری از ورود داده تکراری در اکسل رو انجام بده میتونید ارائه بدید؟
    پاسخ:
    فعال کردن conditional formating بر روی ستون مورد نظر هست و انتخاب گزینه duplicate value و رنگی کردن داده هایی که تکراری وارد میشن

    • آواتار
      حسنا خاکزاد ۳ مهر ۱۳۹۷ / ۹:۴۹ ق٫ظ

      دقیقا این یکی از روش های مشخص کردن تکراری هاست
      ولی جلوگیری نمیکنه

  • Ali Hayeri ۸ شهریور ۱۳۹۷ / ۷:۲۹ ب٫ظ

    سلام استاد
    این روش یک ضعف بزرگ داره
    زمانی که داده وارد شده به صورت کپی وارد میشه دیگه اون رو چک نمی کنه و میتونه تکراری باشه
    اگر راهی برای جلوگیری از اون می دونید بگید تا این مشکل برطرف بشه

    • سامان چراغی ۸ شهریور ۱۳۹۷ / ۸:۴۹ ب٫ظ

      سلام
      این ابزار زمانی که اطلاعات در سلول تایپ میشه اثر داره.
      برای این کار میتونید از VBA استفاده کنید.

    • آواتار
      حسنا خاکزاد ۸ شهریور ۱۳۹۷ / ۱۰:۰۱ ب٫ظ

      درود بر شما
      البته نمیشه گفت این روش، کلا دیتا ولیدیشن در مقابل کپی پیست منفعله و کاری نمیکنه و من راهی براش نمیدونم واقعا.
      مگر اینکه با VBA بحث Copy/Paste رو کنترل کنیم که خب اونم دردسرهای خودش رو داره

  • hamzeh ۲۴ مرداد ۱۳۹۷ / ۱۱:۵۲ ق٫ظ

    درود
    از مطلب ارائه شده استفاده نمودم
    مطلب بسیار کاربردی و روش آموزش که بصورت تصویری و مرحله به مرحله است بسیار موثر است.
    سپاس و مانا باشید

  • Mohammad Ashurian ۲۹ اردیبهشت ۱۳۹۷ / ۴:۰۷ ب٫ظ

    سوال: فرمول دیگه ای که بتونه جلوگیری از ورود داده تکراری در اکسل رو انجام بده میتونید ارائه بدید؟
    پاسخ:

    =isna(match(a2,$a$1:a1,0))
    
    • آواتار
      حسنا خاکزاد ۳۰ اردیبهشت ۱۳۹۷ / ۱۲:۱۱ ب٫ظ

      احسنت بر شما

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *