PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سورت كردن ليست Validation



arsalan135
2014/02/24, 17:45
با سلام خدمت دوستان
فرض كنيد ليستي داريم كه از آن در Data Validation استفاده مي كنيم. اين ليست بعنوان مثال ليست كالا مي باشد( كه در شيت ديگري وجود دارد ) زماني كه در سلول مذكور قصد داريم از ليست كشويي كه باز مي شود كالاي مورد نظر را انتخاب كنيم ، ليست كشويي دقيقا به ترتيب رديفها مي باشد نه براساس مثلا حروف الفبا . چنانچه بخواهيم ليست درون ليست كشويي بصورت نزولي يا صعودي باشد چه راه حلي پيشنهاد مي دهيد.؟
اينكه ليست كالاها را با ابزار filter مرتب كنيم يك راه حل است. مشكلي كه هست اينكه ليست كالا مرتب در حال افزايش و يا تغيير مي باشد. آيا بغير از اين روشي مي شناسيد ؟
ممنون

امين اسماعيلي
2014/02/24, 18:36
با درود

ممکنه راه های دیگه ای هم وجود داشته باشه اما من این راه ها رو به نظرم میاد
1- با کد نویسی مثلا هر وقت اون شیت که لیست کشویی توش هست فعال بشه اون لیست داده هات sort بشن
2- استفاده از ستون کمکی و سورت کردن اون داده ها و سپس از اون لیست تهیه کنید
3-ساختن یک pivot table از اون لیست چون سل های خالی رو براتون نمیاره تکراری ها رو حذف میکنه و سورت میکنه خودکار و کمک از نام گذاری define name محدوده مورد نظر در pivot و در اخر data validation با استفاده از اون نامی که واسه محدوده دادیم . فقط اگر داده ها اظافه و تغییر میکنن باید table ما رفرش بشه

AmirAkbar
2014/02/24, 18:41
اگه حجم کاری خیلی بالاست و دیگه دو سه کلیک برای سورت یه ستون یا دیتابیس خیلی وقتگیره باید یا کامند باتن بذارید و کد لازم رو براش بنویسید یا کد رو تو خاصیت ترک شیت سورس

Worksheet_Deactivate()
بذارید
البته بنظر من ...!!

امين اسماعيلي
2014/02/24, 19:06
با درود
من یه چند نمونه میزارم ببین به کارت میان از همون موارد بالا :

امين اسماعيلي
2014/02/24, 19:12
واسه اپدیت پیویت من با vba انجام دادم چون بغیر از اون قسمت option خود pivot table که در هنگام باز شدن ورک بوک خودکار اپدیتش میکنه من راهی رو بدون Vba بلد نبودم بقیه راه ها دستی بودن

AmirAkbar
2014/02/24, 23:36
با درود
من یه چند نمونه میزارم ببین به کارت میان از همون موارد بالا :

با تشکر ... در فایل sort vba.xls ، تو قسمت بدنه کد ماکرو اصلاح کوچکی لازمه :


Range("E2:E20").Select
Selection.Sort Key1:=Range("E1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal