پرش به محتوای اصلی

آموزش FILTER و UNIQUE و SORT در اکسل با آرایه‌های پویا

آموزش FILTER و UNIQUE و SORT در اکسل با آرایه‌های پویا

آموزش FILTER و UNIQUE و SORT در اکسل با آرایه‌های پویا یک راهنمای عملی برای حل مسئله‌ای تکرارشونده در محیط اکسل، اکسس و اتوماسیون اداری است. در جدول فروش، کاربر می‌خواهد فقط تراکنش‌های یک منطقه را ببیند، نام مناطق تکراری حذف شود و گزارش مرتب بدون کپی فرمول به سطرهای بعدی به‌روز شود. در این راهنما از تعریف مسئله و آماده‌سازی داده شروع می‌کنیم، اجرای نمونه را مرحله‌به‌مرحله توضیح می‌دهیم و در پایان نتیجه، خطاهای محتمل و روش انتقال به یک فرایند واقعی را بررسی می‌کنیم. هدف فقط آشنایی با نام دستور نیست؛ باید بتوانیم خروجی را اندازه بگیریم، علت اختلاف را پیدا کنیم و تغییرات بعدی را بدون از دست‌دادن کنترل انجام دهیم.

تصویر مفهومی برای توابع FILTER و UNIQUE و SORT در اکسل با نمودارها و عناصر آموزشی بدون متن

مسئله و هدف آموزشی

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

بهتر است پیش از انجام هر تغییر در پرونده اصلی، نمونه‌ای کوچک و قابل بازیابی بسازید. سه رکورد معمولی، یک رکورد ناقص، یک مقدار تکراری و دست‌کم یک مقدار مرزی برای آزمایش کافی است. نتیجه مورد انتظار را پیش از اجرای ابزار یادداشت کنید تا صرفاً به ظاهر جدول یا سبز شدن یک پیام موفقیت تکیه نکنید. در محیط سازمانی، کنترل کیفیت داده بخشی از خود راه‌حل است، نه کاری که پس از پایان برنامه به آن فکر کنیم.

مسئله را به سه لایه جدا کنید: داده ورودی، قاعده تبدیل یا محاسبه و خروجی قابل مصرف. این تفکیک مشخص می‌کند که خطا از فایل منبع آمده، از فرض اشتباه درباره نوع داده ناشی شده یا هنگام ارائه گزارش رخ داده است. در هر مرحله نام ستون‌ها، تعداد رکوردها، محدوده زمانی و کلیدهای یکتا را ثبت کنید. یک گزارش خلاصه از این اطلاعات، بررسی نتیجه ماه بعد را بسیار آسان‌تر می‌کند.

Did you know:

با استفاده از تابع LEN در اکسل می‌توانید تعداد حروف موجود در یک سلول را محاسبه کنید؟ این تابع برای کسانی که به دنبال جمع حروف در اکسل هستند، بسیار مفید است و می‌تواند در تجزیه و تحلیل داده‌های متنی استفاده شود.

پیش‌نیازها و فرض‌های فنی

فرمول‌های آرایه و جست‌وجو معمولاً روی Excel Table با ستون‌های نام‌دار خواناتر و مقاوم‌ترند. وقتی سطر تازه به جدول اضافه می‌شود، ارجاع ساختاریافته محدوده را خودکار گسترش می‌دهد. با این حال نوع داده کلیدها را کنترل کنید: شناسه عددی ۱۲۳ با رشته متنی «123» در همه شرایط یکسان رفتار نمی‌کند. همچنین فاصله پنهان و کاراکترهای متفاوت ممکن است دلیل نبود تطبیق باشد.

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

نکته دیگر، نگهداری بلندمدت است. کدی که امروز برای یک فایل جواب می‌دهد ممکن است با تغییر نام شیت، افزودن یک ستون یا ارتقای نسخه Office از کار بیفتد. بهتر است فرض‌های مهم در ابتدای آموزش و در کنار کد نوشته شوند. اگر فرض‌ها برقرار نبودند، توقف همراه با پیام روشن بهتر از ادامه دادن و تولید یک گزارش ناقص است. مستند کوتاهِ ورودی، خروجی و محدودیت‌ها معمولاً از پیچیده‌ترین ترفندهای فنی سودمندتر است.

مراحل پیاده‌سازی

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

جدول منبع را به Excel Table تبدیل کنید

در این گام: ابتدا بازه Sales را به Table تبدیل و ستون Region را بازبینی کنید. استفاده از نام ستون جلوی خطاهای اضافه‌شدن ردیف را می‌گیرد. این کار را ابتدا روی داده آزمایشی انجام دهید و قبل از ورود به گام بعد نتیجه را با ورودی کنترل کنید.

برای آزمون «جدول منبع را به Excel Table تبدیل کنید» یک نمونه درست و یک نمونه مرزی در نظر بگیرید. نام ستون‌ها، نوع داده و نتیجه را در کنار هم ثبت کنید. اگر این مرحله خطا داد، ابتدا فرض آن را اصلاح کنید نه اینکه خطا را نادیده بگیرید.

شرط FILTER را به یک سلول پارامتر وصل کنید

در این گام: برای شرط Region سلول H2 را استفاده کنید. شرط دوم Amount>0 را با ضرب منطقی به فیلتر اضافه کنید. این کار را ابتدا روی داده آزمایشی انجام دهید و قبل از ورود به گام بعد نتیجه را با ورودی کنترل کنید.

برای آزمون «شرط FILTER را به یک سلول پارامتر وصل کنید» یک نمونه درست و یک نمونه مرزی در نظر بگیرید. نام ستون‌ها، نوع داده و نتیجه را در کنار هم ثبت کنید. اگر این مرحله خطا داد، ابتدا فرض آن را اصلاح کنید نه اینکه خطا را نادیده بگیرید.

حالت نبود نتیجه را مدیریت کنید

در این گام: آرگومان سوم FILTER را برای نبود نتیجه پر کنید تا خطای #CALC! به پیام قابل فهم تبدیل شود. این کار را ابتدا روی داده آزمایشی انجام دهید و قبل از ورود به گام بعد نتیجه را با ورودی کنترل کنید.

برای آزمون «حالت نبود نتیجه را مدیریت کنید» یک نمونه درست و یک نمونه مرزی در نظر بگیرید. نام ستون‌ها، نوع داده و نتیجه را در کنار هم ثبت کنید. اگر این مرحله خطا داد، ابتدا فرض آن را اصلاح کنید نه اینکه خطا را نادیده بگیرید.

UNIQUE را روی ستون مناسب اعمال کنید

در این گام: اگر فهرست مناطق لازم است، UNIQUE را فقط بر ستون Region اعمال کنید؛ اعمال آن بر چند ستون، سطر یکتا می‌سازد نه مقدار یکتای همان ستون. این کار را ابتدا روی داده آزمایشی انجام دهید و قبل از ورود به گام بعد نتیجه را با ورودی کنترل کنید.

برای آزمون «UNIQUE را روی ستون مناسب اعمال کنید» یک نمونه درست و یک نمونه مرزی در نظر بگیرید. نام ستون‌ها، نوع داده و نتیجه را در کنار هم ثبت کنید. اگر این مرحله خطا داد، ابتدا فرض آن را اصلاح کنید نه اینکه خطا را نادیده بگیرید.

SORT را دور خروجی آرایه بگذارید

در این گام: SORT را بر خروجی UNIQUE قرار دهید تا ترتیب مستقل از ورودی شود. رفتار تساوی و حروف را با داده فارسی آزمایش کنید. این کار را ابتدا روی داده آزمایشی انجام دهید و قبل از ورود به گام بعد نتیجه را با ورودی کنترل کنید.

برای آزمون «SORT را دور خروجی آرایه بگذارید» یک نمونه درست و یک نمونه مرزی در نظر بگیرید. نام ستون‌ها، نوع داده و نتیجه را در کنار هم ثبت کنید. اگر این مرحله خطا داد، ابتدا فرض آن را اصلاح کنید نه اینکه خطا را نادیده بگیرید.

محدوده Spill را خالی نگه دارید

در این گام: فرمول آرایه پویا را بیرون از Excel Table بنویسید و سلول‌های Spill را خالی بگذارید؛ مسیر خروجی نباید دستی پر شود. این کار را ابتدا روی داده آزمایشی انجام دهید و قبل از ورود به گام بعد نتیجه را با ورودی کنترل کنید.

برای آزمون «محدوده Spill را خالی نگه دارید» یک نمونه درست و یک نمونه مرزی در نظر بگیرید. نام ستون‌ها، نوع داده و نتیجه را در کنار هم ثبت کنید. اگر این مرحله خطا داد، ابتدا فرض آن را اصلاح کنید نه اینکه خطا را نادیده بگیرید.

مثال عملی و بررسی کد

برای روشن‌شدن ساختار توابع FILTER و UNIQUE و SORT در اکسل، کد زیر یک الگوی قابل تغییر ارائه می‌کند. قبل از اجرا، نام جدول‌ها و فایل‌ها را مطابق محیط آزمایشی خود تنظیم کنید. در مثال‌های VBA، کد باید داخل ماژول استاندارد و فایل سازگار با ماکرو قرار گیرد؛ در Power Query کد M در Advanced Editor و در فرمول‌های اکسل عبارت در سلول مناسب نوشته می‌شود.

=FILTER(Sales[[Product]:[Amount]], (Sales[Region]=H2)*(Sales[Amount]>0), "No records")
=SORT(UNIQUE(Sales[Region]))

پس از اجرای مثال، سطرهای ورودی را با خروجی مقایسه کنید. در جدول فروش، کاربر می‌خواهد فقط تراکنش‌های یک منطقه را ببیند، نام مناطق تکراری حذف شود و گزارش مرتب بدون کپی فرمول به سطرهای بعدی به‌روز شود. در مثال‌هایی که چند دستور یا مرحله دارند، هر بخش را جداگانه آزمایش کنید؛ اگر مرحله نخست اشتباه باشد، اجرای موفق مرحله دوم به معنی درست‌بودن نتیجه نیست. برای فایل‌هایی با داده واقعی، خطاهای احتمالی را ثبت کنید و از چاپ یا ارسال اطلاعات حساس در پنجره Immediate خودداری کنید.

کنترل صحت و آزمون شرایط مرزی

اولویت نخست، درستی نتیجه است و تنها پس از آن بهینه‌سازی سرعت معنا پیدا می‌کند. خروجی سریع اما نادرست در گزارش مالی به‌مراتب خطرناک‌تر از خروجی کند اما قابل بازبینی است. شمارش سطرها و جمع کنترل را با منبع مقایسه کنید و نمونه‌ای از رکوردهای انتخاب‌شده و حذف‌شده را دستی بررسی کنید. هنگام تغییر فرمول یا ساختار جدول، همین آزمون‌های ساده را بدون تغییر اجرا کنید تا شکست‌های ناخواسته زود آشکار شوند.

در آخر هر تمرین، نتیجه را نه‌فقط از نظر ظاهری بلکه با یک معیار قابل اندازه‌گیری ارزیابی کنید. مثلاً تعداد فایل‌های پردازش‌شده باید با تعداد فایل‌های واجد شرایط برابر باشد، مجموع ستون کنترل تغییر نکند یا کلیدهای خروجی با جدول مرجع تطبیق داشته باشند. نتیجه را به زبان ساده برای فرد دیگری توضیح دهید. اگر توضیح آن سخت است، احتمالاً هنوز فرض مهمی پنهان مانده که باید به طراحی برگردد.

یک فرمول آموزشی باید علاوه بر پاسخ صحیح، شرایط شکست را هم آشکار کند. نتیجه «پیدا نشد» با سلول خالی معتبر یا عدد صفر یکسان نیست. گزارش نباید این سه وضعیت را بی‌دلیل به یک خروجی تبدیل کند. اگر چند سطر یک کلید مشترک دارند، باید روشن باشد که اولین نتیجه، تمام نتیجه‌ها یا نتیجه تجمیعی مورد انتظار است. این تصمیم، موضوع کسب‌وکار است نه صرفاً تنظیم فرمول.

خطاهای رایج

نشانه یا خطربررسی و راه‌حل
خطای #SPILL! وقتی رخ می‌دهد که سلول‌های خروجی پویا مسدود باشند یا فرمول درون خود Excel Table قرار گیرد.قبل از تکرار اجرای اصلی، فایل آزمایشی را بررسی کنید، مقدارهای ورودی را ثبت و گام 1 را مستقل اجرا کنید. حذف خطا بدون یافتن علت ممکن است نتیجه را ناقص کند.
توابع آرایه پویا در نسخه‌های قدیمی اکسل پشتیبانی کامل ندارند و باید پیش از انتشار فایل به نسخه‌ها توجه کرد.قبل از تکرار اجرای اصلی، فایل آزمایشی را بررسی کنید، مقدارهای ورودی را ثبت و گام 2 را مستقل اجرا کنید. حذف خطا بدون یافتن علت ممکن است نتیجه را ناقص کند.
نوع داده با محاسبه یا فیلتر سازگار نیست.نوع ستون و نمونه مقدار را پیش از ادامه کنترل کنید.
رکوردهای جدید نتیجه را تغییر داده‌اند و کنترل قبلی معتبر نیست.شمار سطرها و جمع کنترل را مجدداً محاسبه کنید.

برای استفاده واقعی، مسیر آزمایش و مسیر تولید را جدا نگه دارید. نام‌گذاری واضح، نسخه پشتیبان و ثبت تغییرات از بسیاری از مشکلات عملی جلوگیری می‌کند. در داده‌های مالی و پرسنلی، از انتشار رکورد نمونه با اطلاعات واقعی اشخاص نیز خودداری کنید. اگر برنامه خروجی قابل دانلود یا ارسال ایجاد می‌کند، پیش از تحویل نام فایل، محدوده اطلاعات، فرمت و محل ذخیره را دوباره کنترل کنید. ابزار خودکار مسئولیت نظارت انسانی را حذف نمی‌کند.

بهترین روش‌ها و نگهداری

نسخه نرم‌افزار پیش‌نیاز مهمی است. فرمول‌های جدید ممکن است در Excel 2016 یا 2019 پشتیبانی نشوند و در محیط‌های قدیمی به خطای نام ناشناخته تبدیل شوند. فایل آموزشی را با نسخه مقصد باز کنید، محاسبه را دوباره انجام دهید و در صورت نیاز روش جایگزین معرفی کنید. بهتر است نسخه سازگار را در ابتدای مقاله بنویسید، نه اینکه کاربر بعد از ساخت کل گزارش متوجه محدودیت شود.

نکته دیگر، نگهداری بلندمدت است. کدی که امروز برای یک فایل جواب می‌دهد ممکن است با تغییر نام شیت، افزودن یک ستون یا ارتقای نسخه Office از کار بیفتد. بهتر است فرض‌های مهم در ابتدای آموزش و در کنار کد نوشته شوند. اگر فرض‌ها برقرار نبودند، توقف همراه با پیام روشن بهتر از ادامه دادن و تولید یک گزارش ناقص است. مستند کوتاهِ ورودی، خروجی و محدودیت‌ها معمولاً از پیچیده‌ترین ترفندهای فنی سودمندتر است.

اولویت نخست، درستی نتیجه است و تنها پس از آن بهینه‌سازی سرعت معنا پیدا می‌کند. خروجی سریع اما نادرست در گزارش مالی به‌مراتب خطرناک‌تر از خروجی کند اما قابل بازبینی است. شمارش سطرها و جمع کنترل را با منبع مقایسه کنید و نمونه‌ای از رکوردهای انتخاب‌شده و حذف‌شده را دستی بررسی کنید. هنگام تغییر فرمول یا ساختار جدول، همین آزمون‌های ساده را بدون تغییر اجرا کنید تا شکست‌های ناخواسته زود آشکار شوند.

تمرین پیشنهادی

یک نسخه کوچک از مسئله «آموزش FILTER و UNIQUE و SORT در اکسل با آرایه‌های پویا» برای تمرین بسازید. سه ورودی تازه اضافه کنید: یک رکورد معتبر، یک رکورد تکراری و یک رکورد دارای مقدار گمشده. پیش از اجرا، خروجی مورد انتظار هر سه را در جدول جداگانه بنویسید. سپس فرایند را اجرا کنید و تفاوت‌ها را کنار هم ثبت کنید. پس از موفقیت، نام یکی از ستون‌ها یا مسیر یکی از فایل‌ها را عمداً تغییر دهید تا رفتار خطا را هم ببینید. در پایان، مراحل لازم برای بازگرداندن وضعیت صحیح را مستند کنید.

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

در آخر هر تمرین، نتیجه را نه‌فقط از نظر ظاهری بلکه با یک معیار قابل اندازه‌گیری ارزیابی کنید. مثلاً تعداد فایل‌های پردازش‌شده باید با تعداد فایل‌های واجد شرایط برابر باشد، مجموع ستون کنترل تغییر نکند یا کلیدهای خروجی با جدول مرجع تطبیق داشته باشند. نتیجه را به زبان ساده برای فرد دیگری توضیح دهید. اگر توضیح آن سخت است، احتمالاً هنوز فرض مهمی پنهان مانده که باید به طراحی برگردد.

موضوعات مرتبط

برای یادگیری پیوسته، درس‌های مرتبط زیر را در کنار این مقاله بررسی کنید. پیوندهای برنامه‌ریزی‌شده پس از انتشار مقصد قابل فعال‌سازی‌اند.

  • فهرست توابع اکسل
  • ادغام خودکار فایل‌های اکسل با Power Query از یک پوشه
  • پاک‌سازی و تغییر شکل داده‌ها در Power Query با Unpivot و Refresh
  • آموزش XLOOKUP در اکسل با جست‌وجوی دقیق و مدیریت خطا

پرسش‌های متداول

توابع FILTER و UNIQUE و SORT در اکسل: چه مسئله‌ای با این روش حل می‌شود؟

این روش برای مسئله‌ای مناسب است که بتوان ورودی و خروجی آن را دقیق تعریف کرد. در جدول فروش، کاربر می‌خواهد فقط تراکنش‌های یک منطقه را ببیند، نام مناطق تکراری حذف شود و گزارش مرتب بدون کپی فرمول به سطرهای بعدی به‌روز شود. در عمل باید ابتدا «جدول منبع را به Excel Table تبدیل کنید» را کنترل و سپس نمونه‌ای از داده درست و نادرست را مقایسه کرد. اگر نتیجه با انتظار تفاوت دارد، لازم نیست کل برنامه بازنویسی شود؛ همان مرحله‌ای را که اختلاف در آن ظاهر شده جداگانه اجرا کنید. این شیوه هم برای آموزش و هم برای نگهداری بعدی قابل اعتمادتر است.

پیش از اجرا چه چیزی را باید کنترل کنیم؟

این روش برای مسئله‌ای مناسب است که بتوان ورودی و خروجی آن را دقیق تعریف کرد. در جدول فروش، کاربر می‌خواهد فقط تراکنش‌های یک منطقه را ببیند، نام مناطق تکراری حذف شود و گزارش مرتب بدون کپی فرمول به سطرهای بعدی به‌روز شود. در عمل باید ابتدا «شرط FILTER را به یک سلول پارامتر وصل کنید» را کنترل و سپس نمونه‌ای از داده درست و نادرست را مقایسه کرد. اگر نتیجه با انتظار تفاوت دارد، لازم نیست کل برنامه بازنویسی شود؛ همان مرحله‌ای را که اختلاف در آن ظاهر شده جداگانه اجرا کنید. این شیوه هم برای آموزش و هم برای نگهداری بعدی قابل اعتمادتر است.

اگر داده ناقص باشد چه اتفاقی می‌افتد؟

این روش برای مسئله‌ای مناسب است که بتوان ورودی و خروجی آن را دقیق تعریف کرد. در جدول فروش، کاربر می‌خواهد فقط تراکنش‌های یک منطقه را ببیند، نام مناطق تکراری حذف شود و گزارش مرتب بدون کپی فرمول به سطرهای بعدی به‌روز شود. در عمل باید ابتدا «حالت نبود نتیجه را مدیریت کنید» را کنترل و سپس نمونه‌ای از داده درست و نادرست را مقایسه کرد. اگر نتیجه با انتظار تفاوت دارد، لازم نیست کل برنامه بازنویسی شود؛ همان مرحله‌ای را که اختلاف در آن ظاهر شده جداگانه اجرا کنید. این شیوه هم برای آموزش و هم برای نگهداری بعدی قابل اعتمادتر است.

چگونه درستی نتیجه را اثبات کنیم؟

این روش برای مسئله‌ای مناسب است که بتوان ورودی و خروجی آن را دقیق تعریف کرد. در جدول فروش، کاربر می‌خواهد فقط تراکنش‌های یک منطقه را ببیند، نام مناطق تکراری حذف شود و گزارش مرتب بدون کپی فرمول به سطرهای بعدی به‌روز شود. در عمل باید ابتدا «UNIQUE را روی ستون مناسب اعمال کنید» را کنترل و سپس نمونه‌ای از داده درست و نادرست را مقایسه کرد. اگر نتیجه با انتظار تفاوت دارد، لازم نیست کل برنامه بازنویسی شود؛ همان مرحله‌ای را که اختلاف در آن ظاهر شده جداگانه اجرا کنید. این شیوه هم برای آموزش و هم برای نگهداری بعدی قابل اعتمادتر است.

آیا این روش برای گزارش‌های واقعی مناسب است؟

این روش برای مسئله‌ای مناسب است که بتوان ورودی و خروجی آن را دقیق تعریف کرد. در جدول فروش، کاربر می‌خواهد فقط تراکنش‌های یک منطقه را ببیند، نام مناطق تکراری حذف شود و گزارش مرتب بدون کپی فرمول به سطرهای بعدی به‌روز شود. در عمل باید ابتدا «SORT را دور خروجی آرایه بگذارید» را کنترل و سپس نمونه‌ای از داده درست و نادرست را مقایسه کرد. اگر نتیجه با انتظار تفاوت دارد، لازم نیست کل برنامه بازنویسی شود؛ همان مرحله‌ای را که اختلاف در آن ظاهر شده جداگانه اجرا کنید. این شیوه هم برای آموزش و هم برای نگهداری بعدی قابل اعتمادتر است.

جمع‌بندی

توابع FILTER و UNIQUE و SORT در اکسل زمانی واقعاً مفید است که نتیجه قابل کنترل و تکرار باشد. در جدول فروش، کاربر می‌خواهد فقط تراکنش‌های یک منطقه را ببیند، نام مناطق تکراری حذف شود و گزارش مرتب بدون کپی فرمول به سطرهای بعدی به‌روز شود. با اجرای مرحله‌ای، بررسی داده‌های مرزی و ثبت فرض‌ها می‌توان یک مثال ساده را به ابزاری قابل اتکا تبدیل کرد. پیش از استفاده از فایل روی اطلاعات اصلی، آزمون‌ها را در نسخه پشتیبان تکرار و محدودیت‌های نسخه نرم‌افزار و ساختار داده را کنترل کنید.

دیدگاهتان را بنویسید

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

تأیید امنیتی هنگام تعامل با فرم بارگذاری می‌شود.