نویسنده موضوع: سورت اتوماتيک در اکسل  (دفعات بازدید: 25026 بار)

دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
سورت اتوماتيک در اکسل
« : 16 مهر 1391 - 21:16 »
با سلام و کسب اجازه از اساتيد، موضوعي اکابري را مطرح ميکنم که شايد براي دوستان کم تجربه اي مانند من بدرد بخورد و با راهنمايي هاي شما تکميل شود.
گاهي در اکسل ميخواهيم يک ستون بطور خودکار سورت شود. مثلا دو ستون A و B داريم که در B نام و A نام خانوادگي قرار دارد و ميخواهيم با اضافه شدن هر نام جديد، بلافاصله بر اساس نام خانوادگي سورت شود.
براي اين کار بايد يک ماکرو بسازيم. براي دوستان تازه کار مثل خودم ساخت ماکرو را از اول توضيح ميدهم:
1-   Alt+F11
2-   روي نام شيت مورد نظر در سمت چپ دوبار کليک ميکنيم.
3-   در پنجره کد که باز ميشود، در ليست باز شو سمت چپ که نوشته General  انتخاب را به worksheet تغيير ميدهيم.
4-   در ليست باز شو سمت راست change را انتخاب ميکنيم.
5-   اديتور بطور خودکار يک sub اضافه ميکند که بايد بين private sub  و end sub اين خطوط را اضافه نماييد:
''''''''''DO NOTHING IF COLUMN B HASN'T BEEN CHANGED
If Target.Column <> 2 Then
Exit Sub
End If

''''''''''OTHERWISE, SORT BY COLUMN A
Columns("A:B").Select

Selection.Sort Key1:=Range("A1"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom

Range("A1").Select
6-   اديتور VBA  را ميبنديم و اگر فايلمان XLSM نيست، آنرا بصورت macro-enabled ذخيره مينماييم.


lamp

دانلود فهرست + فصل اول کتاب توابع و فرمول نویسی اکسل

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


دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #1 : 17 مهر 1391 - 21:46 »
با تشکر از اظهار لطف علیرضای عزیز
سورت اتوماتيک با دستورهاي مشابه فوق به روشهاي گوناگون انجام شده ولي همه اشکالاتي دارند. قبلاً گفتم راهنمايي اساتيد ميتواند آنرا اصلاح و تکميل نمايد.
اگر محرک ماکرو، تغيير در همان ستون سورت شدني باشد، ماکرو دائماً تکرار ميشود و تمامي ندارد.
از طرفي بايد کاربر روي ستون مبناي شروع ماکرو (ستون B) برود تا ماکرو اجرا شود و بعد از سورت،در A1  پارک ميشود.
نمونه فايل نام و نام خانوادگي پیوست است

فرشید میدانی

  • مدیر سایت
  • *****
  • ارسال: 755
  • جمع امتیازها: +227/-14
    • فرساران
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #2 : 27 مهر 1391 - 11:13 »
برای رفع این مشکل یعنی LOOP شدن هنگام اجرای یک Event مثل همین چیزی که شما اشاره کرده اید راه حل اکسلی آن به شکل زیر است:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
        Range("A1") = "farsaran.ir"
    Application.EnableEvents = True
End Sub

مراقب باشد که حتما به حالت True مجدد برگردد (مثلا Error و ... ندهد و ...)  :)

دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #3 : 28 مهر 1391 - 23:55 »
با تشکر از جناب ميداني، يک سئوال داشتم:
اگر ستوني که ميخواهيم سورت شود با فرمول از يک شيت ديگر بيايد، با تغيير در آن شيت خود بخود سورت نخواهد شد، مگر شرط اجراي ماکرو را Private Sub Worksheet_SelectionChange بگذاريم.
راه حلي پيشنهاد ميکنيد؟
نمونه پيوست است.

بهرام صمدیان

  • مدیران انجمن
  • *
  • ارسال: 545
  • جمع امتیازها: +180/-1
    • آمار 80
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #4 : 29 مهر 1391 - 01:06 »
با سلام

فایل زیر را ببینید امیدوارم منظورتان را برآورده سازد
با احترام

lamp

دانلود فهرست + فصل اول کتاب توابع و فرمول نویسی اکسل

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


فرشید میدانی

  • مدیر سایت
  • *****
  • ارسال: 755
  • جمع امتیازها: +227/-14
    • فرساران
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #5 : 29 مهر 1391 - 10:37 »
راه حل دیگر آن این است که هر وقت کاربر وارد این شیت می شود اینکار انجام شود پس در  Worksheet_Activate  کدها را می نویسیم.
(ما در Access گزینه ای Order by را در SQL داریم برای همین منظور که مطمئن شویم همواره گزارش اتوماتیک مرتب شده است.)

بهرام صمدیان

  • مدیران انجمن
  • *
  • ارسال: 545
  • جمع امتیازها: +180/-1
    • آمار 80
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #6 : 29 مهر 1391 - 18:36 »
البنه من در فایلی که قبلا نیز قرار داده ام هر دو روش ر ابکار برده ام تا اگر شیت فعال شد سورت انجام شود و اگر شیت فعال بود و تغییری در ستون مورد نظر انجام شد باز هم سورت انجام شود
با احترام

دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #7 : 30 مهر 1391 - 23:53 »
عليرغم وجود دکمه تشکر، بدينوسيله، تشکر شديداللحن خود را اعلام ميدارم.

فرشید میدانی

  • مدیر سایت
  • *****
  • ارسال: 755
  • جمع امتیازها: +227/-14
    • فرساران
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #8 : 13 آبان 1391 - 21:50 »
دکمه تشکر وجود دارد.  :)همان دو فلشی که زیر اسم پست کننده مطلب (قرمز/ سبز) است برای دادن امتیاز به کاربران استفاده می شود.

دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #9 : 14 آبان 1391 - 20:49 »
انجام وظيفه شد ;)

lamp

دانلود فهرست + فصل اول کتاب توابع و فرمول نویسی اکسل

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


naser1357

  • کاربر فعال
  • ***
  • ارسال: 175
  • جمع امتیازها: +3/-1
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #10 : 25 تیر 1392 - 21:30 »
با سلام
من  یک فایل دارم ستونهایش به ترتیب عبارتند از مشتری1-مشتری2- مشتری3 و مشتری 4 بعد قیمت خرید محصول-قیمت فروش-تعداد
و سطرهایس عبارتند از 1-محصول1-محصول2- ومحصول........... و زیر نام مشتری اسامی افراد
حال می خواهم هر وقت برنامه باز کنه برنامه اتوماتک اسامی مشتری را سورت کنه چکار کنم؟

دکتر قاسم زاده

  • کاربر فعال
  • ***
  • ارسال: 115
  • جمع امتیازها: +55/-3
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #11 : 26 تیر 1392 - 01:42 »
 میتوانید از نمونه فایلهای این پست استفاده نمایید و ماکرو را به فایل خودتان اضافه کنید(بسته به مشخصات فایلتان آنرا اصلاح کنید)
یا فایل خودتان را بگذارید تا سایر دوستان زحمت آنرا بکشند.
البته چون در این انجمن هدف آموزش است نه کار خدماتی، روش اول ارجح است.
 ;)

ali_121

  • کاربر تازه‌وارد
  • *
  • ارسال: 15
  • جمع امتیازها: +0/-0
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #12 : 27 تیر 1392 - 13:50 »
سلام خدمت آقایان میدانی و Alirezag
اگر بخواهیم 9 تا ستون رو سورت کنیم بر اساس امتیاز
فرمول چه تغییراتی پیدا میکنه
ستونها از b تا j هست و امتیازات در ستون j قرار دارن
نمونه از کارم رو براتون گذاشتم
ممنون میشم راهنماییم کنید

ali_121

  • کاربر تازه‌وارد
  • *
  • ارسال: 15
  • جمع امتیازها: +0/-0
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #13 : 28 تیر 1392 - 13:41 »
سلام خدمت شما دوستان عزیز
با یخورده تغییر در فرمولها و آزمون و خطا تونستم فایل رو سورت کنم
خیلی خیلی ممنون از تایپک شما

m.gh12

  • کاربر تازه‌وارد
  • *
  • ارسال: 1
  • جمع امتیازها: +0/-0
پاسخ : سورت اتوماتيک در اکسل
« پاسخ #14 : 31 تیر 1392 - 07:47 »
با سلام خدمت دوستان
من یه فایل دارم که چند ستون باید بر طبق یه ستون مرتب بشه لطفا راهنمایی فرمایید