לוח המאה.jpg

אפתח את המאמר במילי דאורייתא. נאמר בתורתינו הקדושה: "וְסָפַרְתָּ לְךָ שֶׁבַע שַׁבְּתֹת שָׁנִים שֶׁבַע שָׁנִים שֶׁבַע פְּעָמִים וְהָיוּ לְךָ יְמֵי שֶׁבַע שַׁבְּתֹת הַשָּׁנִים תֵּשַׁע וְאַרְבָּעִים שָׁנָה" (ויקרא כה, ח)
המפרשים שואלים, לצורך מה התורה השמיעה לנו את מנין שבע שבתות שנים שהוא 49 שנה. הרי כל אחד יודע את החשבון הפשוט פה
49 = 7 × 7 ???
מתרץ על כך רבי יעקב קרנץ זצ"ל - (המגיד מדובנא) כדרכו במשל:
עני מרוד היה מחזר בקביעות על הפתחים ואסף פרוטה לפרוטה, לימים הצטברו באמתחתו כמה אלפי פרוטות. העני היה סופר בכל שעה פנויה את הפרוטות, ותוך כדי, מתפאר בפני שכניו ומכריו ואומר "תראו איזה עשיר גדול ועצום אני…"
אמר פיקח אחד לאותו עני: "הרי כל ימיך אתה רגיל לספור פרוטות, ולכן נדמה לך שצברת "הון רב"...אך אם תעשה חשבון ותמיר את כל הפרוטות שברשותך למטבע גדול וחשוב. תגלה שצברת כמה שקלים בודדים…".עד כאן המשל.

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

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

המטרות הפדגוגיות העיקריות סביב נושא לוח המאה הן:
1
. זיהוי ושיום המספרים בלוח- כתיבת המספרים והגייתם באופן נכון.
2. כתיבת מספר עוקב ומספר קודם למספר הנתון- לדוגמא נתון המספר 56, המספר הקודם 55, המספר העוקב 57.
3. זיהוי מיקום המספר המתאים במקום מסוים בלוח על פי העשרות השונות - במצב של מספר חסר באחת השורות יתבקש הילד להשלים את המספר החסר על ידי התבוננות בספרת העשרות החוזרת על עצמה באותה שורה.לדוגמא: השורה המתחילה במספר 61 בלוח חסר בה את המספר 67. הילד ידע להשלימו על פי הבנתו שספרת העשרות החוזרת על עצמה היא 6.
4. פירוק כל מספר בלוח לעשרות ואחדות. לדוגמא: מספר 43 מורכב מ4 עשרות ו3 יחידות.
5.המשגה- התלמיד יכיר את המושגים טור, שורה, כימות ויבין את הקשרם ללוח.
6. רכישת מיומנויות -פיתוח חשיבה מסדר גבוה על ידי חישוב העשרת המתאימה לשורה החסרה, השוואת המספר ובדיקת התאמה למספרים קרובים, הסקת מסקנות וסימנים העוזרים בזכירת רצף הכתיבה.
7.ספירת המספרים בלוח כיחיד וכקבוצה.
8.ספירה בדילוגים על ידי כפולות 10 למשל בטור 5 הדילוגים בקפיצות של 10.
5-15-25 וכן הלאה…

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

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

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

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

בואו נראה ביחד את 2 הפתרונות לביצוע משימה שכזאת.
קדימה התחלנו…

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

תראו (בקוד הסמוך) את הפונקציות וסדרן שערכתי בתא C2 בגיליון המצורף בלינק להלן.
קוד:
=TRANSPOSE(OFFSET($A$2,(ROW(C1)-1)*10,0,10))
אסביר ואפרט שלב אחרי שלב, על כל הטוב שמתחולל בנוסחה כאן.
אגש ישירות לפונקציית offset… בארגומנט הראשון "תא הפתיחה" והיציאה למסלול הוא תא A2.
בארגומנט השני כזכור לכם אנו מגדירים לפונקצייה כמה תאים צריך לצעוד למטה (בסימון חיובי) או למעלה (בסימון שלילי).
כאן הארגומנט נפתח בפונקציית row עם הפנייה לתא C1.ומהי מספר השורה בתא C1 ?
התשובה היא כמובן - 1!
אנו עדיין בתוך הסוגריים וכעת יש להחסיר 1 מהתוצאה לעיל. נחשב ביחד… 0 = 1 - 1
לאחר כל זאת יש להכפיל את התוצאה הנ"ל ב10. נחשב ביחד… 0 = 0 * 10
בשורה תחתונה, התשובה היא = 0. המשמעות שהפונקצייה לא מתקדמת שום צעד/ים למעלה/למטה.

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

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

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

"כל הטוב" שהוזן בתא C2 נגרר כלפי מטה לעוד 9 תאים הסמוכים שבעמודה C.
ועכשיו נראה יחד אלו שינויים יחולו בפונקציות ומה השפעתם? וזו תהיה התשובה לקושיה שהצגתי לעיל…
אם אקח כדוגמא את תא C3 לאחר גרירת הנוסחאות.
קוד:
=TRANSPOSE(OFFSET($A$2,(ROW(C2)-1)*10,0,10))
שימו לב שכל מבנה הארגומנטים ללא שינוי. וכי השינוי היחיד הוא בארגומנט השני של פונקציית offset.
הערך שהוזן בארגומנט פונקציית row לא נתקבע (באמצעות מקש F4) בכוונה תחילה.אנו רואים כאן שלאחר גרירת הפונקצייה מספר השורה שמוחזר לנו מ-row הוא 2.
אם נחסיר 1, התוצאה תהיה 1. ואם כעת נכפיל ב 10 התוצאה תהיה 10.
אה…איזה יופי! זה בדיוק מה שרצינו שיוחזר לנו בשורה השניה של לוח המאה- מהספרה 11 עד הספרה 20.
כעת פונקציית offset תדלג ותרד למטה היישר לתא A12 ומשם תלקט לנו 10 תאים כלעיל.
זה פשוט גאוני ומדויק להפליא! עכשיו, לאחר פתרון "הקושיה" - פשוט תהנו מיופי, החכמה והלוגיקה של הפונקציות! תראו כמה פונקציית offset היא שימושית ורבת עוצמה…


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


פיתרון 2:
תראו את הפונקצייה בתא C22 שבגיליון שיטס המצורף להלן.
קוד:
=WRAPROWS(A2:A,10,"")
פונקציית wraprows היא פונקציית מערך חדשנית, נפלאה וגאונית.(זמינה באקסל-אופיס 365 וכן בשיטס)
מהותה/ מטרתה של הפונקצייה היא: להפוך/להמיר מערך שקיים בעמודה/ בשורה אחת.למערך שנפרס על מספר שורות.
שורה "חדשה" במערך החדש תתחיל -בכל פעם שהשורה מתמלאת באופן מקסימלי על פי מספר ערכים לשורה שנקוב בארגומנט השני וכפי שתכף אסביר.
כלומר הפונקצייה "עוזרת לנו" לנהל ולסדר את הנתונים באופן חדש ושונה מהקיים.
אסביר על הארגומנטים של הפונקצייה עם הדוגמא הנ"ל. כך ההסבר יהיה הפעם- יותר מוחשי ומובן…
הארגומנט הראשון vector - כלומר הטווח החד מימדי אותו אנו רוצים לפרוס.
במקרה כאן מדובר על טווח A2:A.
הארגומנט השני wrap_count - כלומר מהו מספר הערכים המירבי (המקסימלי) שהפונקצייה תחזיר לנו לכל שורה במערך החדש.
במקרה כאן הוזנה הספרה 10. כי אנו חפצים שכל שורה בלוח המאה תכיל 10 מספרים, לא פחות ולא יותר!
הארגומנט השלישי pad_with - דהיינו איזה ערך יכתב במערך החדש אם ישארו תאים ריקים בשורה מסוימת. כברירת מחדל, הפונקצייה תחזיר שגיאת n/a אא"כ יוזן ערך אחר בארגומנט.
שימו לב שבמקרה כאן זה ברור ש100 הספרות שבעמודה A "ימלאו עד תום" את כל עשרת השורות, והיה ניתן לדלג על ארגומנט זה מהסיבה שהוא אינו רלוונטי…
ובכל זאת, "לרווחא דמילתא" - כתבתי בארגומנט זה "" כלומר שיוחזר תא ריק ללא כל ערך.

לסיכום: ראינו, כי את לוח המאה ניתן ליצור באקסל/ שיטס ב 2 דרכים נפלאות, גאוניות ושונות.
והבוחר יבחר…
תמונה פונקציות.jpg


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


בעמודה A סדורים הספרות 1 עד 120 כמנין שנות האדם המקסימליות בעולם הזה.
כך גזרה החכמה העליונה. וכמו שנאמר בתורה הקדושה "וַיֹּאמֶר ה' לֹא יָדוֹן רוּחִי בָאָדָם לְעֹלָם בְּשַׁגַּם הוּא בָשָׂר וְהָיוּ יָמָיו מֵאָה וְעֶשְׂרִים שָׁנָה" (בראשית ו.ג) מי יתן וכולנו נזכה לאריכות ימים ושנים עד מאה ועשרים שנה אמן.
אם נחזור לנמשל של "המגיד מדובנא". אם האדם יערוך חשבון כמה שנות יובל "יחלפו" (הסיבה למרכאות היא.מפני שאדם נוסע בתוך מימד הזמן…זאת למרות התחושה האינטואיטיבית של האדם שהזמן חולף על פניו…זה נכון מדעית ע"פ הפיזיקה המודרנית/פילוסופית/ ולהבדיל בראי היהדות כפי שביאר הרב דסלר בספרו "מכתב מאליהו ח"ב ועוד…ואכמ"ל) בימי חייו. יראה שמדובר ביובל אחד או שניים וקצת…
אז נכון שניתן לערוך חשבון כזה באופן פשוט ולבצע חלוקה של 120 במספר 50 ולקבל תוצאה, אך לאחר כל החשבונות בעזרת הפונקציות שהזכרתי לעיל, ניתן להציג ולהמחיש זאת באופן ויזואלי באופן פשוט וקל.
תראו את הפונקציות בתא C3 …
קוד:
=TRANSPOSE(WRAPROWS(A3:A,50,""))
ערכתי את הפתרון בעזרת פונקציית wraprows שציינתי לעיל בפתרון השני.עם "עטיפת" הפונקצייה בפונקציית transpose.
אוסיף ואציין, כי במקרה כאן היה ניתן להשתמש רק בפונקציית wrapcols (פונקציית מערך זו היא "אחותה התאומה" של פונקציית wraprows ותפקידה הוא להחזיר מערך בעמודות ולא בשורות.וגם היא זמינה באופיס 365 בלבד או בשיטס)
והחלק העיקרי בכל זה נמצא בתא j2 עם פונקציית counta קטנה שמסכמת 2 יובלות ("השארית" כאן היא זניחה ולא נכללת בחשבון) כמנין מקסימלי וכנ"ל.

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

לינק לגיליון שיטס הכולל הסבר עבור החישובים ליצירת לוח המאה מצורף כאן