יום שלישי, 9 באפריל 2013

מיון ללא מיון ב"אקסל" - פרק א'


מיון ללא מיון ב"אקסל" - פרק א'


מיון ללא מיון ב"אקסל" – למה התכוון המשורר?
הבה נראה!
נניח שאנו רוצים למַיֵּן מיון יורד את הסכומים בעמודה A
אפשר, כמובן, להשתמש בכלי המיון המובנה ב"אקסל":
1. בוחרים תא בעמודה שרוצים למַיֵּן (עמודה A), 

תמונה 1: העמודה לפני המיון, לאחר בחירת תא כלשהו בנתונים שרוצים למַיֵּן


2. בלשונית: Data בוחרים בקבוצה: Sort &Filter [בממשק עברי: לשונית "נתונים" וקבוצה "מיין וסנן"]וכאן יש שתי אפשרויות:
3.1 אפשרות א (המהירה): בוחרים באיקון מיון יורד (ראה תמונה 2)


תמונה 2: מיון יורד - שיטה 1: בחירת באיקון "מיון יורד" (Z->A)



3.2 אפשרות ב: בוחרים באיקון המיון (Sort)

תמונה 3: מיון יורד - שיטה 2: שלב 1 - בחירת באיקון "מיון " 


ובחלונית שנפתחת, ב סדר המיון (Order) בוחרים ב: Largest to Smallest 
ומאשרים ב: OK


תמונה 4א: מיון יורד - שיטה 2: שלב 2 - בחירת "מיון יורד" בממשק אנגלי

תמונה 4ב: מיון יורד - שיטה 2: שלב 2 - בחירת "מיון יורד" בממשק עברי



בשתי השיטות התוצאה זהה: כך תֵרָאֵה העמודה לאחר המיון
 תמונה 5:נתוני עמודה A לאחר מיון יורד 


עד כאן, הכל די פשוט וברור.
אבל אני רוצה להראות לכם שיטה שבאמצעותה נוכל למין את עמודה A מבלי להזדקק לכלי המיון ב"אקסל".
אנו נעשה זאת באמצעות נוסחא פשוטה למדי, המתבססת על הפונקציה: LARGE
הפונקציה LARGE
=LARGE(array, n)

מחזירה את הערך ה-n-י בגודלו בתוך תחום ערכים. למשל: כדי למצוא את הערך הגבוה ביותר (=הראשון, מס. 1) בקבוצת המספרים: {1,92,13,27,55}   נכתֹב:
=LARGE({1,92,13,27,55},1)


והתשובה תהיה: 92.
אם נרצה למצוא את המספר השני בגודלו בקבוצה זו, נכתֹב:

=LARGE({1,92,13,27,55},2)
והתשובה תהיה: 55

שימו לב: המערך (תחום הערכים) לא חייב להיות ממוין כדי למצוא את הערך במיקום המבוקש.
והפתרון: אנו יודעים לומר ל"אקסל" מהו תחום הערכים שאותו אנו רוצים למַיֵּן (התאים A2:A19) אבל כיצד נוכל לומר לו כיצד למין אותם, כלומר: כיצד לומר לו שבתא הראשון אנו רוצים את המספר הגדול ביותר בתחום (מס. 1), בתא השני אנו רוצים את המספר השני בגודלו (מס. 2), בתא השלישי - את המספר השלישי בגודלו וכו'....?

התשובה: נשתמש בטריק קטן. הפונקציה: ROW() - מחזירה את מספר השורה שבה היא נמצאת.

לדוגמא: אם היא נמצאת בשורה 1 - היא מחזירה את הערך: 1, אם היא נמצאת בשורה 2 - היא מחזירה את הערך:2, ואם היא נמצאת בשורה n - היא מחזירה את הערך: n
אם כך, הפונקציה: ROW() - תהיה הארגומנט השני של הפונקציה LARGE
והנוסחא תֵרָאֵה כך:

=LARGE($A$2:$A$19, ROW())
עדיין יש להוסיף תקון קטן לנוסחא: מכיון שתחום הערכים שאנו רוצים למַיֵּן מתחיל בשורה 2 (A2:A19), יש להחסיר 1 ממספר השורה:

=LARGE($A$2:$A$19,ROW()-1)

כלומר: בשורה 2 - אנו רוצים את המספר הגדול ביותר, בשורה 3 - את המספר השני בגודלו, בשורה 4 - את המספר השלישי בגודלו וכו'.
כעת נקליד את הנוסחא בתא: G2 ונגרֹר כלפי מטה באמצעות "ידית המלוי" (fill handle)  - עד לתא G19

  תמונה 6: גרירת הנוסחא מ- G2 כלפי מטה באמצעות "ידית המלוי" (fill handle)

והתוצאה הסופית:
בעמודה A – הנתונים לפני המיון, בעמודה G  - הנתונים הממוינים

תמונה 7: עמודה G מציגה במיון יורד את המספרים בעמודה A - באמצעות נוסחא


הערה חשובה: אפשר כמובן למַיֵּן מיון עולה (מהקטן לגדול) באופן דומה באמצעות הפונקציה  SMALLבמקום הפונקציה LARGE
נקליד את הנוסחא: 
=SMALL($A$2:$A$19,ROW()-1)
בתא J2  ונגרֹר כלפי מטה עד לתא J19.


תמונה 8: הפונקציהSMALL  בעמודה G מציגה במיון עולה את המספרים בעמודה A - באמצעות נוסחא



בפרק הבא נלמד כיצד למין שתי עמודות, או ליתר דיוק: כיצד למַיֵּן כך שנתונים באותה שורה - לא יאבדו את הקשר ביניהם אם נמַיֵּן רק עמודה אחת.



אין תגובות:

הוסף רשומת תגובה