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

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

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







חלק א - ייבוא מניין הספירה של היום

בתא C1 ייכתב מנין הספירה של היום, תהליך זה מתבצע ב-3 שלבים
1. ראשית יש לבדוק מתי חל חג הפסח, בדיקה מהירה הוציאה לי את התאריך 13/04/2025, זה נכתוב בתא A1, ניתן לכתוב זאת בכל תא, וכמובן להסתיר ע"י צביעה בלבן.
2. בתא B1 נפתח תפריט נפתח שנותן לבחור האם עברה השקיעה או לא, כאשר עוברת השקיעה, גוגל שיטס תוסיף יום נוסף למניין הספירה, למי שאוהב סקריפטים ניתן לכתוב סקריפט שמייבא אוטומטי את זמן השקיעה.
3. כעת בתא C1 יחושב אוטומטי מניין הספירה להיום. תהליך זה מתבצע עם נוסחה שמפחיתה מהתאריך של היום את התאריך של חג הפסח.

הכרת הפונקצייה בקצרה:
פונקציית TODAY מחזירה את התאריך של היום.
זה נכתב כך:
קוד:
=TODAY()-A1

בכדי שנדע האם עברה השקיעה או לא, נוסיף תנאי שאם בתא B1 כתוב "אחרי השקיעה" אז שגוגל שיטס תוסיף יום, ואם לא, אז שלא תוסיף יום.
בתגובה למאמר שאל @כוכב עולה שתי שאלות א. למה חישבתי מתי חל חג הפסח, הרי ימי הספירה מתחילים יום אחרי? ב. בפתיחת הגיליון בבוקר ובערב מוצג אותו התאריך אע"פ שבאמת זמן הספירה הוא משתנה.
התשובה לשתי השאלות שבאמת המחשב לא יודע מתי זמן הספירה, הוא מחשב ימים לפי 12:00 בלילה על אף שזמן השקיעה הוא בערך 19:15 בזמן זה, לכן אין ברירה אלא לכתוב ידנית שמדובר אחרי השקיעה.
אבל בזכותו הוספתי תא נוסף (F1) בו ניתן להקליד ידנית את זמן השקיעה, כרגע מוקלד 19:15, ייתכנו שינויים... וכעת גוגל שיטס מחשבת האם עבר 19:15 או לא.
כעת גוגל שיטס מדייקת, ורק אחרי השקיעה היא טועה, על כן יש לבחור "אחרי השקיעה", או למחוק ולהקליד ידנית את זמן השקיעה, השארת שני התאים הללו פתוחים, או כתיבה ידנית של זמן השקיעה, אך עוד לא עבר הזמן הזה, תביא את התוצאה של של יום האתמול.
הכרת הפונקצייה בקצרה:
פונקציית IF מתנה שאם התנאי הוא נכון, אז מתבצעת פעולה מסויימת, ואם לא אז מתבצעת פעולה אחרת.
פונקציית NOW מחזירה את התאריך של היום, ואת השעה של היום, פעולת חיסור של NOW-TODAY תחזיר את השעה בלבד.

זה נכתב כך:
קוד:
=IF(B1= "אחרי השקיעה", TODAY()-A1+1, IF(B1= "לפני השקיעה", TODAY()-A1, (IF(NOW()-TODAY() > F1, TODAY()-A1+1, TODAY()-A1))))


נכון לעת כתיבת המאמר, הנוסחה יצרה את המספר 7.

4. בכדי שנבחר את הנוסח המתאים, נוסיף תפריט נפתח של "נוסח ספרדי/אשכנז", זה ישמש אותנו בהמשך.

השלב הראשון והקל הושלם בהצלחה!





חלק ב - תהליך כתיבת הנוסחה

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

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

שלב א- חישוב כמות הימים:
1. בתא A3 נכתוב נוסחה פשוטה:
קוד:
="היום"

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

2. עכשיו מתחיל פה תהליך מורכב, תתפסו ראש:
בתא C1 הוחזר מניין הימים, אבל הוא רשום במספר נומרי, כעת אנו נכתוב נוסחה שתמיר אותו למילים בעברית.
מפאת הבעיה בעברית בה המספרים נכתבים באופן שונה בהתאם למיקום בו הם נכתבים, נאלץ לחלק את הנוסחה ל-3 אפשרויות: 1 עד 10; 10 עד 20; ו- 20 עד 49.
אכתוב את התנאי שמחלק, אך לא את התוצאה (שתיכתב תכף בתוך הקו התחתון), הנוסחה מחולקת לשורות עם אלט+אנטר, ומחוברת עם &.
הכרת הפונקצייה בקצרה:
פונקציית AND מחזירה נכון כאשר כמה תנאים מתקיימים, ומחזירה לא נכון כאשר אחד מהם לא מתקיים, ובקינון בתוך פונקציית IF בארגומנט התנאי, מתקבל בתנאי נכון רק כאשר שני התנאים נכונים.
זה נכתב כך:
קוד:
=IF(C1<10, __________,) &
IF(AND(C1>9, C1<20), __________,) &
IF(AND(C1>19, C1<50), ___אחדות___ & ___עשרות___,)

בואו נעבור על האפשרות הראשונה בה מספר הימים הוא בין 1 ל-10:
הנוסחה עושה תנאי IF לזהות האם המספר שלנו קטן מ-10, אם נכתב 1, הנוסחה תחזיר את המילה "יום אחד", ואם נכתב 2-9 הנוסחה תחזיר שני/שלושה וכדו'. בחלק הבא נדאג לרשום את המילה ימים.
שימו לב שכאשר כתוב 0, הנוסחה מוסיפה לזה 1 וזה נהייה 1, כך שצריך לדאוג שהארגומנט הראשון יהיה ריק, אז נכתוב פעמיים , , בכדי להגדיר שכאשר יהיה כתוב 0 ויוחלף ל-1, אז שלא יהיה כתוב כלום.
הכרת הפונקצייה בקצרה:
פונקציית CHOOSE מחזירה נתון מתוך מערך נתונים שנכתב בתוכה, על פי מספר שנכתב בתא מסוים, נוסחה זו מתבלבלת כאשר נכתבת הספרה 0, ועל כן נוסיף 1, עכשיו החלק הראשון במערך מתאים אם כתוב 0, ואותו ניתן להשמיט במקרה הצורך, והחלק השני במערך מתאים אם כתוב 1 וכן הלאה.
זה נכתב כך:
("תשעה" ,"שמונה", "שבעה", "שישה", "חמישה", "ארבעה", "שלושה", "שני", "יום אחד" , ,CHOOSE(C1+1=


עכשיו נעבור על האפשרות בה מספר הימים נע בין 10 ל-20:
זה אותו רעיון כמו האפשרות הראשונה בין 1-10, רק בשינויי מילים, הנוסחה פשוט עושה את התנאי לזהות האם המספר גדול מ-10 אך קטן מ-20, ואז מחילה את המילים עשרה, אחד עשר וכו'.
שימו לב לכמה שינויים:
בכדי להשתמש בפונקציית CHOOSE בבטחה אנו חייבים טווח של מספרים, ולכן קודם כל משתמשים בנוסחה RIGHT ע"מ לזהות את הספרה הימנית ואז 10 נהיה 0, 11 הופך ל-1 כי בעצם נבחרה רק הספרה הימנית, ובגלל ש-0 כזכור עושה בעיות אז כותבים CHOOSE+1, כך 10 הופך ל-0+1=1, 11 הופך ל-2 וכן הלאה עד ש-19 נהייה 10, עכשיו, בגלל שאנחנו עובדים על טווח מצומצם של ספרות (10-19) ניתן לוותר על פונקציית RIGHT ולכתוב רק CHOOSE-9 ונגיע לאותה תוצאה ש-10 הופך ל-1 ו-19 ל-10, אבל ככה זה יותר מסודר לטעמי.
שינוי נוסף הוא שכעת אנו משתמשים גם במקרה שכתוב 10 שכאמור מוחלף בספרה 1, כך מתקבלת המילה "עשרה".
עוד שינוי עיקרי הוא המילים עצמם שכתוב "אחד עשר", "שנים עשר" וכו'.

הכרת הפונקצייה בקצרה:
פונקציית RIGHT לוקחת טקסט שנכתב בתא מסוים ומחזירה את התו הימני ביותר, מהספרה 14 היא מחזירה את הספרה 4.
זה נכתב כך:
("תשעה עשר" ,"שמונה עשר", "שבעה עשר", "שישה עשר", "חמישה עשר", "ארבעה עשר", "שלושה עשר", "שנים עשר", "אחד עשר" ,"עשרה" ,CHOOSE(RIGHT(C1)+1=

אפשרות שלישית היא שהמספר גדול מ-19 וקטן מ-50, תהליך זה בא בשני שלבים, שלב האחדות ושלב העשרות, שימו לב לסוגריים של פונקציית IF, הם נסגרות אחרי שתי הפונקציות של ה-CHOOSE המחוברות עם &, הסוגריים האלו קריטיות!!!
את שלב האחדות אפשר לדלג רק למען הסדר נכתוב אותו כי יש כמה שינויים.
דבר ראשון כאן נהיה חייבים להשתמש בפונקציית RIGHT משום שיכול להיות 35 ויכול להיות גם 45 הדבר היחיד שמקשר ביניהם הוא הספרה הימנית (5) ועל כן נשתמש בפונקציית RIGHT.
דבר נוסף הוא השינוי במילה "שני" שהוחלפה ל"שניים".
דבר שלישי ואחרון והוא העיקרי הוא הוספת האות ו (שניים ושלושים), נוסחה זו מבטיחה שרק כאשר כתוב ספרות בין 1-9 אז נכתבת האות ו אבל אם כתוב 20, 30 או 40, הנוסחה תדלג.

שלב העשרות הוא גם דיי פשוט ובנוי על אותו רעיון בואו נעבור עליו:
פה אנו בוחרים את הספרה השמאלית, היא יכולה להיות 2,3,4. 2 מסמל עשרים, 3 שלושים ו-4 ארבעים, ניתן לוותר על החיסור של ה-1 כפי שבטוח הבנתם מה משמעותו, ולהחליפו בפסיק זאת אותה התוצאה.

הכרת הפונקצייה בקצרה:
פונקציית LEFT לוקחת טקסט שנכתב בתא מסוים ומחזירה את התו השמאלי ביותר, מהספרה 35 היא מחזירה את הספרה 3.
זה נכתב כך:
("תשעה ו" ,"שמונה ו", "שבעה ו", "שישה ו", "חמישה ו", "ארבעה ו", "שלושה ו", "שנים ו", "אחד ו" , ,CHOOSE(RIGHT(C1)+1=
("ארבעים", "שלושים", "עשרים", CHOOSE(LEFT(C1)-1 &

ולסיכום חלק זה:
קודם מתבצע תנאי של מה שקטן מ-10, ואז מוחל עליו פונקציית CHOOSE הראשונה. אח"כ תנאי בין 10-20 עם פונקציית CHOOSE השנייה, ולבסוף התנאי בין 20-49 עם שתי פונקציות ה-CHOOSE.
מצורף צילום מסך למי שהסתבך...
1745135741992.png


3. כתיבת המילה "יום" או "ימים", בתא C3 יש פונקצייה פשוטה, אם C1 גדול מ-10 אז אומרים "יום", ואם לא, אם הוא גדול מ-1 יש לכתוב ימים.
להזכירכם, אם הוא יום 1, לא יירשם כלום אבל אל דאגה, בפונקצייה בתא B3 כיסינו את זה ורשמנו מראש "יום אחד", המילה "יום" צריכה להיות כתובה לפני.
זה נכתב כך:
((,"ימים" ,C1>1)IF ,"יום" ,C1>10)IF=
נוסף על כך נרצה שאם יש מניין גם של ימים וגם של שבועות, אז שהתוכנה תוסיף כאן פסיק בנוסח אשכנז, על כן נכתוב נוסחה שאם כתוב גם מספר מעל 6 שאז יש שבועות, וגם זה נוסח אשכנז אז שיהיה כתוב את הפסיק.
הפסיק לא יכול להיות בתא בפני עצמו משום שכאשר נחבר את כל התאים אנחנו נוסיף רווח אוטומטי ביניהם, ואנו רוצים שהפסיק יהיה מחובר למילה.
אז זה מוסיף לנו את הנוסחה הזאת:
(, "," ,("נוסח אשכנז"=IF(AND(C1>6, D1 &

4. לפי הספרדים אומרים "לעומר" בין הימים לשבועות, ולפי האשכנזים לא, על כן הנוסחה בתא D3 תזהה אם בחרנו נוסח ספרדי אז היא תוסיף לעומר ואם לא אז לא תכתוב כלום.
בנוסף, נרצה שאם יש מניין גם של ימים וגם של שבועות, אז שהתוכנה תוסיף את הפסיק כאן אם זהו נוסח ספרדי, אז צריך להוסיף את זה לתנאי.
רק שימו לב שעכשיו הפסיק הוא חלק מהנוסחה הראשונה ומחובר עם &, בשונה מהנוסחה בתא C3!
(,(, "," ,C1>6)IF & "לעומר" ,"נוסח ספרדי"=IF(D1=


וואו! סיימנו את החלק הראשון והמורכב, עכשיו נתקדם לשלב השני והמעניין!




שלב ב- חישוב כמות השבועות:
5. בתא E3 נכתוב נוסחה פשוטה לזיהוי מניין של ימים ושל שבועות, בכדי להוסיף את המילה "שהם", אחזור על הנוסחה בשביל הפרוטוקול...
(, "שהם" ,C1>6)IF=

6. עכשיו אנו רוצים לדעת כמה שבועות צריכים להיות כתובים בתא F3, אז נחלק את תא C1 ב-7, ונבקש רק את התוצאה ללא השארית, זה יתבצע עם פונקציית QUOTIENT.
כאשר פונקציית QUOTIENT תחזיר את המספר השלם, נוכל לבחור על פיו את המילה מתוך מערך הנתונים של פונקציית CHOOSE, כמובן שנצטרך לוודא קודם שאין את הספרה 0, על כן נוסיף לזה +1.
הכרת הפונקצייה בקצרה:
פונקציית QUOTIENT לוקחת טקסט שנכתב בתא מסוים ומחלקת אותו במספר הרצוי, היא מחזירה רק את התוצאה של המספרים השלמים, כך שאם כתוב 15,18,20 והמספר הרצוי לחלק בו הוא 7, תמיד יוחזר הספרה 2.
זה נכתב כך:
("שבעה", "שישה", "חמישה", "ארבעה", "שלושה", "שני", "שבוע אחד" , ,CHOOSE(QUOTIENT(C1,7)+1=

7. בדיקה הבאה בתא G8 הוא לכתוב את המילה שבועות, זה קורה רק כשהמניין הוא 14 ומעלה, על כן נכתוב בנוסחה שאם הוא מעל 13 אז שיכתוב שבועות ואם לא - לא.
זה נכתב כך:
(, "שבועות" ,C1>13)IF=

שלב ג- חישוב כמות הימים מתוך השבועות:
שלבים אלו מתחילים עם פונקציית IF פשוטה שמזהה אם יש לפחות שבוע אחד, הרי אין טעם לכתוב היום חמישה ימים שהם חמישה ימים...
כאן נכתוב גדול מ-7, כי לשבוע אין שאריות של ימים.
הנוסחה היא כך:
(, "_______" ,C1>7)IF=

8. עכשיו בתא G3 נספור כמה ימים נשארו, אז נחלק את מניין הימים ב-7 ונזהה את השארית, נוסיף על זה 1 כהרגלנו בקודש למקרה שהשארית היא 0 (היא יכולה לחזור 6 פעמים שונות, כי הפעם הראשונה היא לא בחיפוש - הגדרנו רק מעל 7, זוכרים?), ופונקציית CHOOSE תעשה את העבודה.
הכרת הפונקצייה בקצרה:
פונקציית MOD לוקחת טקסט שנכתב בתא מסוים ומחלקת אותו במספר הרצוי, היא מחזירה רק את התוצאה של השאריות, כך שאם כתוב 44,16,23 והמספר הרצוי לחלק בו הוא 7, תמיד יוחזר הספרה 2.
זה נראה כך:
("ושישה", "וחמישה", "וארבעה", "ושלושה", "ושני", "ויום אחד" , ,CHOOSE(MOD(C1,7)+1=

9. עכשיו נרצה בתא H3 לזהות אם יש יותר מיום אחד בשארית אז שיהיה כתוב "ימים", הפונקצייה הבאה תעשה זאת בשלמות: במקרה ששארית חלוקת מניין הימים ב-7 הינה גדולה מ-1, יש לכתוב ימים ואם לא-לא.
זה נראה כך:
(,"ימים" ,IF(MOD(C1,7)>1=

10. הנוסחה הבאה היא פשוטה ומטרתה לכתוב בתא J3 את המילה "בעומר" לנוסח האשכנזים, נוסחה קלילה לקינוח כפי שהובאה כבר לפני.
היא נראית כך:
(,"בעומר" ,"נוסח אשכנז"=IF(D1=

זהו, עברנו את הדרך הארוכה, עכשיו בוא נהנה מהפירות ונאחד את כל הנוסחאות לתא אחד!




חלק ג - שילוב לתא אחד
בתא A4 נרצה שיהיה כתוב את כל נוסח הברכה שעמלנו עליו, אז ראשית נאחד את כל התאים A4:J4 לתא אחד ענק שיכיל את הכל, ונכתוב בו נוסחה שכותבת את כל מה שיש בשורה 3, עם הפרדה של רווח, ובסוף לכתוב נקודה.
הכרת הפונקצייה בקצרה:
פונקציית TEXTJOIN מאחדת טקסטים בכמה תאים לתא אחד, אם כתוב שם משהו (TRUE) ומוסיפה רווח ביניהם.
זה נכתב כך:
"." & TEXTJOIN(3:3, TRUE, " ")=

שיפצתי קצת את הנוסחה הסופית, והנה לפניכם נוסחה אחת המאגדת בתוכה את כלל הנוסחאות.
כמובן שכאן לא שיניתי את כיוון הנוסחה, ולכן זה קצת ייראה משובש, אבל ככה ממש היא נכתבת, יש פונקציות נוספות שכדאי להכיר.
הכרת הפונקצייה בקצרה:
פונקציית TRIM מזהה רווחים כפולים ומשמיטה אחד מהם.
פונקציית SUBSTITUTE מחליפה רצף של תווים ברצץ אחר של תווים.
זה נכתב כך:
=SUBSTITUTE(TRIM("היום" & " " &IF(C1<10, CHOOSE(C1+1, ,"יום אחד" ,"שני", "שלושה", "ארבעה", "חמישה", "שישה", "שבעה", "שמונה", "תשעה"),) &
IF(AND(C1>9, C1<20), CHOOSE(RIGHT(C1)+1, "עשרה", "אחד עשר", "שנים עשר", "שלושה עשר", "ארבעה עשר", "חמישה עשר", "שישה עשר", "שבעה עשר", "שמונה עשר", "תשעה עשר" ),) & IF (AND(C1>19, C1<50), CHOOSE(RIGHT(C1)+1, , "אחד ו", "שניים ו", "שלושה ו", "ארבעה ו", "חמישה ו", "שישה ו", "שבעה ו", "שמונה ו", "תשעה ו") & CHOOSE (LEFT(C1)-1, "עשרים", "שלושים", "ארבעים", ),) &" " & IF(C1>10, "יום", IF(C1>1, "ימים",)) & IF(AND(C1>6,D1="נוסח אשכנז"), ",",) & " " & IF(D1="נוסח ספרדי", "לעומר" & IF(C1>6, ",",),) & " " & IF(C1>6, "שהם",) & " " & CHOOSE(QUOTIENT(C1,7)+1,,"שבוע אחד","שני", "שלושה", "ארבעה", "חמישה", "שישה", "שבעה") & " " & IF(C1>13, "שבועות",) & " " & IF(C1>7, CHOOSE(MOD(C1,7)+1,,"ויום אחד","ושני", "ושלושה", "וארבעה", "וחמישה", "ושישה"),) & " " & IF(C1>7, IF(MOD(C1,7)>1, "ימים",),) & " " & IF(D1="נוסח אשכנז", "בעומר",) & "."), " .", ".")​
ונכון לשעת כתיבת שורות אלו מופיע הכיתוב:

היום שבעה ימים לעומר, שהם שבוע אחד.

קישור לגוגל שיטס: