תמונת שער.png


תמונת מקור - Leonardo AI

איתא במתניתין מסכת אבות (פרק ה' משנה ב'):

"עֲשָׂרָה דוֹרוֹת מֵאָדָם וְעַד נֹחַ, לְהוֹדִיעַ כַּמָּה אֶרֶךְ אַפַּיִם לְפָנָיו, שֶׁכָּל הַדּוֹרוֹת הָיוּ מַכְעִיסִין וּבָאִין עַד שֶׁהֵבִיא עֲלֵיהֶם אֶת מֵי הַמַּבּוּל.
עֲשָׂרָה דוֹרוֹת מִנֹּחַ וְעַד אַבְרָהָם, לְהוֹדִיעַ כַּמָּה אֶרֶךְ אַפַּיִם לְפָנָיו, שֶׁכָּל הַדּוֹרוֹת הָיוּ מַכְעִיסִין וּבָאִין, עַד שֶׁבָּא אַבְרָהָם וְקִבֵּל עָלָיו שְׂכַר כֻּלָּם".


ובפירוש "תוספות יום טוב" כתב:

"עשרה דורות מנח ועד אברהם. לא דמי למאדם ועד נח. דאדם ונח בכלל עשרה. אבל הכא אין נח בכלל. אלא לפי דסיים בנח. הדר ופתח ביה". עכ"ל.

ורבינו המהר"ל מפראג ז"ל מאור עיני ישראל פירש בספרו "דרך חיים" (על מסכת אבות) וזהו לשונו:

"ומה שאמר שהיה אברהם מקבל שכר כולם, ודבר זה ענין עמוק מפני שאלו הדורות שהיו מנח עד אברהם כולם של הבל ותוהו אין בהם מציאות רק הבל ותוהו נחשבו, וכמו שאמרו ז"ל (עבודה זרה דף ט.) שני אלפים תוהו דהיינו עד שבא אברהם והי' אברהם התחלת וראש הבריאה,

ואברהם בשביל זה שהיה התחלה יותר נחשב מציאות מכל בני אדם שבעולם במה שהיה התחלה והתחלה היא עיקר מציאות ועיקר העולם, והיו הדורות שלפני אברהם הפך אברהם כי כל אותן הדורות היו הבל אין בהם ממש ואברהם יסוד ועיקר כל העולם. ומפני זה קבל שכר כולם.

כי ההפך של דבר מקבל מה שכנגדו, וזה כי אלו היה נעשה אש ומים שהם הפכים מן דבר אשר טבעו חם ולח, בודאי היה מקבל האש חלק היובש שהיה לחלק הדבר שנעשה ממנו המים, והמים קבלו הלחות של חלק הדבר שנעשה ממנו האש,


ולפיכך כיון שהיה אברהם ודורות אלו הפכים והיה להם ביחד עשרה דורות שהם כלל אחד, והדורות האלו היו מכעיסין לפניו, לכך נטל אברהם שכר של כל עשרה דורות ושאר הדורות כולם היו תוהו.

ועיין במה שכתב בספר "מכתב מאליהו" למורינו הרב אליהו דסלר זצ"ל (חלק ד' עמוד 102) וזה לשונו:

"רגע רגע וגילוייו, יום יום, שנה שנה. וכן דור דור וגילוייו, כי כן מצאנו שכל דור יש לו נסיונות משלו ואופי משלו כגון דורו של חזקיה, דורו של רבי יהודה בר אילעאי וכדומה.

כל הגילויים האפשריים במשך שיתא אלפי שנין קבועים הם מראש, כי כך נסדרו סדרי הגילויים וצירופיהם מראשית הבריאה עד סוף כל הדורות. וכן נקבעו מקומותיהן ותפקידיהן של כל הנשמות של כל באי עולם בהשתלשלות הגילויים ההם והכלים הנדרשים להם. ולכל אחד מהם הבחירה אם ימלא תפקידו וישלים חלקו בגילוי או לא.

לפעמים חל מפנה במצב הגילויים של דור או של כמה דורות, ובשעה כזו יש אפשרות שיקבל אדם אחד שפע גדול ממזל עליון שישנה את מזלו הפרטי מן הקצה אל הקצה.

כך היה בימיו של אברהם אבינו שנולד אברם כי היה חלקו להיות אב - לארם היינו האב הרוחני לבני ארם נהריים. ולצורך זה היה במזלו שלא יוליד בנים. אבל הוא חי בסוף עשרה דורות שכולם היו מכעיסים לפני הקב"ה, וכיון שכן הוא בחר להיות הראשון לגלות האמונה הטהורה בו יתברך ולהורות דרכו הישרה לכל באי עולם. ופעל זאת למרות כל ההסתר שהצטבר על ידי ההכעסה של עשרה דורות שלמים. הוא בעבר אחד וכל העולם בעבר שני. ובזה זכה בתכלית כוללת ונטל שכר כולם. היינו שהוא גילה מה שהיה בחלק כולם לגלות. וגלוי וידוע שאין ברוחניות הבדלים בכמות או במספר, אלא רק הבדלים בערך ואיכות.

ולפי זה שכר כולם הוא שאילו היו כל עשרה הדורות ההם מגלים כל האפשרי להם בחלקיהם, לא היה בזה קידוש ה' יותר מאשר גילה אברהם אבינו ע"ה מאחר שהם כולם העמיקו להחשיך את העולם כמעט בלי הפסק ויוצא מן הכלל, והוא עמד נגד הסתר עצום כזה ובחר במה שבחר.


ומכיון שנשתנה מצב כל הגילויים וזכה אברהם שתצא ממנו תכלית כל הבריאה כולה היה מוכרח שישתנה מזלו שינוי יסודי ושיהיו לו בנים כדי שיצאו ממנו כלל ישראל ולבסוף המלך המשיח ותיקון הכללי, כמו שכתוב ונברכו בך כל משפחות האדמה. והיינו אמרם ז"ל אברם אינו מוליד אבל אברהם מוליד".

עכ"ל המכתב מאליהו, והם והם בכלל דברי רבינו ז"ל.


אבל אצל נח לא היה לו לנח מעלה זאת שיהיה התחלת המציאות כמו שהיה אברהם, ולא שייך לומר עליו שהוא היה נוטל שכר כולם".

עד כאן לשון רבינו המהר"ל מפראג.

נפלא מאוד מאוד!

כעת, בואו תראו איך כל הנ"ל קשור לאקסל ולעולמן של הפונקציות…

לעיל מצאנו בדברי המהר"ל מפראג ז"ל בביאור המשנה שכתב "והיו הדורות שלפני אברהם הפך אברהם כי כל אותן הדורות היו הבל אין בהם ממש ואברהם יסוד ועיקר כל העולם. ומפני זה קבל שכר כולם".

להבדיל בין קודש לחול…אם נמחיש זאת כסימולציה לטווח של 10 תאי אקסל/שיטס, כאשר תשעת התאים העליונים הם ריקים כהמחשה ל 9 דורות מנח ועד (לא בכלל) אברהם שהיו "הבל אין בהם ממש" ובתא העשירי אנו נכתוב "אברהם" כהמחשה לדור העשירי הלא הוא אברהם אבינו ע"ה שהיה התחלה, "והתחלה היא עיקר מציאות ועיקר העולם" כלשונו של המהר"ל מפראג.

ואז…נרצה להחזיר בעזרת פונקציית xlookup וכדומה את ערך התא הראשון (כלומר העליון ביותר) שאיננו ריק.


נ.ב כמובן שניתן לבצע סינון בעזרת פונקציות filter ולהציב תנאי שהתא אינו ריק "<> , אבל אז (בדוגמה הנ"ל) יוחזר "מערך" חדש המכיל תא אחד עם ערך "אברהם" ותא/ים ריק/ים - "מאן דכר שמיה…"

אנו רוצים "לאתגר את עצמנו" בכך שכל התאים הריקים נשארים במערך כמות שהם ובכל זאת פונקציית xlookup וכדומה "תדע לבד" לדלג על התאים האלו ולחפש את התא הראשון שאינו ריק ואת ערכו להחזיר לפנינו.

האם זה אפשרי?

התשובה היא - כן ובהחלט!


סקרנים לשמוע? קדימה יצאנו לדרך…

לפניכם צילום מסך מתוך הגיליון המצורף בלינק להלן:

תמונה גיליון נספח.png


שלב 1:

הטווח שלנו להמחשת ההליך הוא A2:A6 כאשר התאים המכילים ערך טקסט הם A4 ו A6. כל יתר התאים ריקים מכל תוכן.

שלב 2:

זהו מבנה הפונקציות בתא B2:

קוד:
=ARRAYFORMULA(ISBLANK(A2:A6))

תכירו את פונקציית isblank הנפלאה השייכת "למשפחת" פונקציות הבדיקה ("האיזים") באקסל/שיטס.

תפקידה ומטרתה של פונקציה זו היא לערוך בדיקה אם התא/ים (שהוזן/שהוזנו בארגומנט הפונקציה) הוא/הם ריק/ים.

(אם) הוא = is

ריק = blank

אם אכן התא/ים ריק/ים הפונקציה מחזירה true כלומר נכון/אמת.

ואם לאו הפונקציה מחזירה false כלומר אינו נכון/שקר.

במקרה כאן הוזן טווח A2:A6. (זו בדיוק הסיבה שיש "לעטוף" את הפונקציה בגוגל שיטס בפונקציית arrayformula)

המערך שהוחזר כאן הוא בהתאמה.

עבור הבדיקה לתא A2 הוחזר true.

עבור הבדיקה לתא A3 הוחזר true.

עבור הבדיקה לתא A4 הוחזר false.

עבור הבדיקה לתא A5 הוחזר true.

עבור הבדיקה לתא A6 הוחזר false.

אני רוצה שנעצור לרגע ונחשוב יחד…נכון לשלב זה אם ההינו "מבקשים" מפונקציית xlookup לחפש את הערך "true" בטווח זה (שהוחזר משלב 2) ולהחזיר את הערך משלב 1 בהתאמה (כלומר באותה השורה) הפונקציה הייתה מחזירה את תוכן תא A2, כלומר תא ריק.

ומדוע? כי תא B1 הוא התא הראשון / העליון ביותר (על הלוגיקה הנפלאה לכך כתבתי באריכות במאמר כאן עיין שם) שכתוב בו true!

הכול טוב ויפה…אבל זו לא התוצאה שאנו מעוניינים במקרה שלנו…


על מנת לפתור את "הבעיה הזו" אנו נהפוך את תוצאות המערך שהוחזר בשלב 2 כמו שתראו תיכף בשלב 3.

שלב 3:


זהו מבנה הפונקציות בתא C2:

קוד:
=ARRAYFORMULA(NOT(ISBLANK(A2:A6)))

זה הזמן להכיר את פונקציית not הנפלאה באקסל/שיטס.

הפונקציה not באקסל, מחזירה את ההיפך מהתוצאה, כלומר כאשר תוצאה של תנאי לוגי היא אמת = true הנוסחה not תחזיר false,
וכאשר התוצאה של התנאי הלוגי היא false, הפונקציה not תחזיר true.

כלומר אנו משתמשים בפונקציית not כדי להפוך את תוצאת הארגומנטים של הפונקציה.

עכשיו תוכלו לראות את הקסם המתרחש בשלב הבא…

שלב 4:

זהו מבנה הפונקציות בתא D2:

קוד:
=XLOOKUP(TRUE,C2:C6,A2:A6)

בשלב זה "אנו אומרים" לפונקציית xlookup לחפש את הערך "true" בטווח שהוחזר משלב 3 ולהחזיר בהתאמה את הערך העליון / הראשון משלב 1.

הפונקציה "יוצאת למסע החיפושים" ופוגשת לראשונה את הערך "true" בתא C4 ולאר מכן מחזירה בהתאמה את התא A4.

התוצאה היא = הערך 3.

אכן, 3 הוא הערך בתא הראשון בטווח שאינו ריק.


וואו!!!

זה באמת נפלא וגאוני!!!

לסיום, הנה "הדובדבן שבקצפת"...

לפניכם צילום מסך נוסף (מתוך הגיליון בלינק להלן) ובו תוכלו לראות את כל השלבים הנ"ל מקופלים זה בתוך זה בנוסחה אחת.

תמונה גיליון ראשי.png


כל הקסם מתרחש בתא B12…

קוד:
=ARRAYFORMULA(XLOOKUP(TRUE,NOT(ISBLANK(B1:B10)),B1:B10))

פונקציית xlookup מחזירה את הערך "אברהם" כי הוא ערכו של התא הראשון שאינו ריק בטווח B1:B10

כאמור לעיל, הדוגמה בערכי טווח זה היא סימבוליקה לביאורו של המהר"ל מפראג ז"ל במתניתין :
"ואברהם בשביל זה שהיה התחלה יותר נחשב מציאות מכל בני אדם שבעולם במה שהיה התחלה והתחלה היא עיקר מציאות ועיקר העולם, והיו הדורות שלפני אברהם הפך אברהם כי כל אותן הדורות היו הבל אין בהם ממש ואברהם יסוד ועיקר כל העולם. ומפני זה קבל שכר כולם…"

אברהם אבינו ע"ה היה התחלה ועיקרו של העולם…


ועד כאן לאקסל ולעולמן של הפונקציות…

מקווה שנהניתם מהמסע המופלא והלוגיקה לאורכו של מאמר זה…

לינק לגיליון שיטס אודות הדרך לקבל באמצעות פונקציית xlookup את הערך הראשון שאינו ריק ברשימה - מצורף כאן.