תמונת מקור - Leonardo AI
"מאן דחזא חלמא ולא ידע מאי חזא, ניקום קמי כהני בשעה שעולים לדוכן ונימא הכי, רבונו של עולם אני שלך וחלומותי שלך כו', ויכוין דלסיים בהדי כהני דעני צבורא אמן, ואי לא לימא הכי, אדיר במרום שוכן בגבורה אתה שלום ושמך שלום יהי רצון שתשים עלינו שלום".
(שולחן ערוך אורח חיים סימן ק"ל סעיף א')
"קורא על מטתו פרשה ראשונה של שמע ומברך המפיל חבלי שינה על עיני וכו'...
ואומר יושב בסתר עליון. יברכך ה' וגו' עד וישם לך שלום. ואומר השכיבנו עד סמוך לחתימה"
(שולחן ערוך אורח חיים סימן רל"ט סעיף א')
שלמה המלך עליו השלום אמר (ודע, דחזקיה וסייעתו הם שכתבו את הספרים ישעיה, משלי, שיר השירים וקהלת. כך איתא בברייתא במסכת בבא בתרא דף ט"ו ע"א עיין שם) ברוח קודשו בספר שיר השירים (פרק ג' פסוקים ז-ח):
"הִנֵּה מִטָּתוֹ שֶׁלִּשְׁלֹמֹה שִׁשִּׁים גִּבֹּרִים סָבִיב לָהּ מִגִּבֹּרֵי יִשְׂרָאֵל.
כֻּלָּם אֲחֻזֵי חֶרֶב מְלֻמְּדֵי מִלְחָמָה אִישׁ חַרְבּוֹ עַל יְרֵכוֹ מִפַּחַד בַּלֵּילוֹת".
ובמדרש ילקוט שמעוני (שיר השירים רמז תתקפ"ו) אמרו רבותינו ז"ל:
"ששים גבורים סביב לה - אלו ששים אותיות שבברכת כהנים.
כלם אחוזי חרב - שכל אחד ואחד שמו של הקב"ה נזכר בתוכו יברכך ה', יאר ה', ישא ה'.
איש חרבו על ירכו מפחד בלילות - אפילו אדם רואה בחלומו שחרב שלופה ונתונה על צוארו משכים בבוקר והולך לבית הכנסת ורואה את הכהנים נושאים את כפיהם והחלום הרע מתבטל ממנו, לכך נאמר מפחד בלילות".
וכיוצא בו ביאר בלשונו הנפלא התרגום יונתן בן עוזיאל (שם):
"כַּד בְּנָא שְׁלֹמֹה מַלְכָּא דְּיִשְׂרָאֵל יָת בֵּית מַקְדְּשָׁא דַּיָי בִּירוּשְׁלֵם אֲמַר יְיָ בְּמֵימְרֵיהּ כַּמָּה יָאֵי בֵּית מוּקְדְּשָׁא הָדֵין דְּאִתְבְּנִי לִי עַל יְדוֹי דְּמַלְכָּא שְׁלֹמֹה בַּר דָּוִד וְכַמָּה יָאֲיָן כָּהֲנַיָּא בְּעִדָּן דְּפָרְסִין יְדֵיהוֹן וְקָיְמִין עַל דּוּכָנֵיהוֹן וּמְבָרְכִין לְעַמָּא בֵּית יִשְׂרָאֵל בְּשִׁתִּין אָתִין דִּמְסִירִין לְמֹשֶׁה רִבְּהוֹן וְהַהִיא בִּרְכְתָא מְסַחֲרָא לְהוֹן כְּשׁוּר רָם וְתַקִּיף וּבַהּ מִתְגַּבְּרִין וּמַצְלְחִין כָּל גִּבָּרֵי יִשְׂרָאֵל"
זו הסיבה לכך שאומרים פסוקים אלו של ברכת כהנים לפני השינה כשמירה וכהגנה מכל רע ומפחד בלילות.
וזו גם הסיבה לנוהג (כנזכר בשו"ע לעיל ומקורו מדברי הש"ס במסכת ברכות דף נ"ה ע"ב) שכאשר הכהנים מברכים את ישראל מזכירים את חלומות הלילה ומבקשים שהם יהפכו לטובה ולברכה.
(ועיין עוד בספר "דרשות חתם סופר" חלק ב' (דרוש לשבועות דף רפ"ט) שהביא בטעם הדבר בשם התורת חיים - דברכת כהנים שהוא בחינת נבואה מבטל החלום שהוא רק אחד משישים בנבואה ומתבטל בשישים.)
ובעניין זה הביא בזוהר הקדוש (פרשת נשא דף קמ"ה ע"א - רעיא מהימנא) אודות הרזין עילאין שיש באותן 60 אותיות שבברכת כהנים:
"בְּהַהִיא שַׁעֲתָא דְּבִרְכְתָא דָּא נָפְקָא מִפּוּמֵיהּ דְּכַהֲנָא, אִינּוּן שִׁתִּין אַתְוָון, נָפְקִין וְטָסִין בִּרְקִיעָא, וּמְמָנָן שִׁתִּין רַבְרְבִין, עַל כָּל אָת וְאָת. וְכֻלְּהוּ אוֹדָן עַל כָּל אִלֵּין בִּרְכָאן.
מַאי טַעֲמָא שִׁתִּין אַתְוָון בְּבִרְכָן אִלֵּין. בְּגִין דְּיִשְׂרָאֵל שִׁתִּין רִבּוֹא אִינּוּן, וְרָזָא דְּשִׁתִּין רִבּוֹא קַיְימִין בְעָלְמָא, וְכָל חַד וְחַד אִיהוּ חַד רִבּוֹא".
תרגום - בְּאוֹתָהּ שָׁעָה שֶׁבְּרָכָה זוֹ יוֹצֵאת מִפִּי הַכֹּהֵן, אוֹתָן שִׁשִּׁים אוֹתִיּוֹת יוֹצְאוֹת וְטָסוֹת בָּרָקִיעַ, וּמְמֻנִּים שִׁשִּׁים גְּדוֹלִים עַל כָּל אוֹת וְאוֹת, וְכֻלָּם מוֹדִים עַל כָּל הַבְּרָכוֹת הַלָּלוּ.
מָה הַטַּעַם שִׁשִּׁים אוֹתִיּוֹת בַּבְּרָכוֹת הַלָּלוּ? מִשּׁוּם שֶׁיִּשְׂרָאֵל הֵם שִׁשִּׁים רִבּוֹא, וְסוֹד שִׁשִּׁים רִבּוֹא עוֹמְדִים בָּעוֹלָם, וְכָל אֶחָד וְאֶחָד הוּא (רבוא) אֶחָד.
ומשום חיבת הקודש(אע"פ שאינו מעניינו של המשך מאמר זה) אוסיף מה שביאר רבי שלמה אפרים מלונטשיץ זצ"ל בפירושו על התורה "כלי יקר" (פרשת נשא פרק ו' פסוק כ"ד) שהמספר 60 אף נרמז בכך שכל אחד משלושת הפסוקים מתחיל באות י' ("יברכך", "יאר", "ישא") שכאשר היא במילואה (כלומר: יו"ד) היא שווה 20 – וצירוף שלושת היוד"ין יחד יוצר את המספר 60 עיין שם. והוא פלא מנפלאות התורה הקדושה.
נפלא מאוד!
כעת, בואו ותראו איך כל הנ"ל קשור לאקסל ולעולמן של הפונקציות…
ובכן, מכל האמור והמבואר לעיל מצינו שמנין האותיות בברכת כהנים הוא - 60.
ולהבדיל בין קודש לחול… כאשר אנו מעוניינים לדעת את מנין התווים בתא אקסל / שיטס מסוים, אז הדרך הפשוטה והידועה ביותר היא לבצע זאת בעזרת פונקציית len.
כן, אתם זוכרים…הזכרתי אותה במאמריי הקודמים כל כך הרבה פעמים.
וכמובן שבאמצעות פונקציה זו יהיה ניתן לספור את מניין האותיות (ללא רווחים כדלהלן) בברכת הכהנים שכאמור לעיל סכומם עולה 60.
אבל רגע רגע…אתם - קוראי מאמר זה אוהבים אתגרים, נכון?
אז הנה אתגר מעניין - נסו לחשוב על דרך אחרת ויצירתית לחישוב סך התווים בתא אקסל/שיטס שלא באמצעות פונקציית len…
סקרנים לשמוע? קדימה התחלנו…
ראשית, לפניכם צילום מסך מתוך הגיליון שיטס המצורף בלינק להלן:
בטווח C1:C3 מצורפים 3 הפסוקים של ברכת כהנים,
פונקציות האקסל/שיטס מתייחסות לתו רווח כתו לכל דבר ועניין,
וכיוון שאנו מעוניינים לספור את סך האותיות בברכת כהנים באופן מדויק יש לבצע פעולה ראשונית של הסרת רווחים באופן טוטאלי (ולא להשאיר רווחים "נורמלים/תקניים" בלבד באמצעות פונקציית trim כפי שהסברתי באריכות במאמר כאן עיין שם…) באמצעות פונקציית substitute הנפלאה.(הסברתי אודותיה בהרחבה במאמר כאן עיין שם…)
זהו מבנה הפונקציה בתא D1:
קוד:
=SUBSTITUTE(C1," ","")
אנו אומרים לפונקציה להמיר כל רווח (כזה " ") שהיא מבחינה בתא C1 בכלום.(כלומר "")
ולמעשה מה שנותר כעת הוא לספור את ס"ך התווים בכל פסוק ואז לבצע פעולת חיבור לכל התוצאות.
פתרון 1:
זהו מבנה הפונקציות בתא C5:
קוד:
=SUM(LEN(D1),LEN(D2),LEN(D3))
פתרון 2:
פתרון זה הוא יותר מקוצר…
זהו מבנה הפונקציות בתא C6:
קוד:
=ARRAYFORMULA(SUM(LEN(D1:D3)))
פתרון 3:
או בדרך אחרת עם עיקרון די דומה…
זהו מבנה הפונקציות בתא C7:
קוד:
=SUMPRODUCT(LEN(D1:D3))
כזכור, במאמר כאן הסברתי בהרחבה אודות פונקציית sumproduct הגאונית והנפלאה.
גם כאן הפונקציה מבצעת "פעולת חיבור" לכל מערך של תוצאות פונקציית len.
עד כאן הכול ברור, מובן וידוע…
והתוצאות הן 60.
נכון מאוד, בברכת כהנים ישנם 60 אותיות וכנ"ל.
(נ.ב בברכת כהנים יש עוד רמז וחידוש נפלא במנין של כל פסוק לבדו. שהרי בפסוק הראשון מנין האותיות =15, בפסוק השני מנין האותיות = 20 ובפסוק השלישי מנין האותיות = 25.
ובמאמר בלינק כאן - הבאתי מדברי מרן ראש הישיבה רבי מאיר מאזוז זצוק"ל רמז נפלא בכל זה הקשור "למשפט פיתגורס" עיין שם)
זוכרים את האתגר שלנו?
ספירת תווים בתא לא באמצעות פונקציית len.
וכאן אנו מגיעים לפתרון הבא…
פתרון 4:
אתחיל מהסוף, זהו מבנה הפונקציות בתא C8:
קוד:
=ARRAYFORMULA(COUNTIF(CODE(MID(D1:D3,COLUMN(A:Z),1)),">0"))
במבט ראשוני לא ברור ולא מובן "מה הולך פה"...נכון מאוד!
אני אסביר את כל המהלך פה שלב אחר שלב…
ובכן לפניכם צילום מסך נוסף (וגם הוא מצורף בגיליון בלינק להלן) בו תוכלו להבחין בכל השלבים המפורטים להלן:
שלב 1:
בתא A2 יש להזין את הטקסט שאנו מעוניינים לספור את סך התווים שבו.
במקרה כאן מדובר על המילה "אברהם". (המכילה 5 תווים בדיוק)
שלב 2:
זהו מבנה הפונקציות בתא B2:
קוד:
=ARRAYFORMULA(TRANSPOSE((COLUMN(A:J))))
במאמר כאן הסברתי אודות פונקציית column. אזכיר בקצרה כי תפקידה הוא להחזיר את מספר העמודה האמיתי שהוזן בפונקציה.
במקרה כאן הוזן A:J כלומר מערך עמודות. (וזו הסיבה שבשיטס יש לעטוף את הפונקציה בפונקציית arrayformula)
הפונקציה מחזירה את המספרים 1 עד 10 כמערך אופקי. (כפי צורת ומתכונת העמודות זו אחר זו)
ומי "שהופכת" מערך זה למערך אנכי היא פונקציית transpose - אותה הזכרתי בעבר במאמריי מספר פעמים.
נקודה חשובה:
שלב זה דורש שימת לב מיוחדת בכתיבת טווח העמודות בפונקציית column.
מספר העמודות צריך להיות שווה או יותר מסך התווים בתא A2 אך לא פחות…
שלב 3:
זהו מבנה הפונקציות בתא C2:
קוד:
=ARRAYFORMULA(MID(A2,TRANSPOSE(COLUMN(A:J)),1))
במאמר כאן (ועוד) כתבתי אודות מהותה של פונקציית mid ועל הארגומנטים שבה.
ובמקרה שלנו, הפונקציה "מפרקת" את המילה "אברהם" לתווים בודדים כאשר בכל תא ממוקם תו אחד בודד.
הפונקציה שולפת בכל פעם תו שמיקומו מראשית המחרוזת הוא שונה, זאת על פי המערך שנוצר משלב 2.
התוצאה היא:
א כנגד המספר 1 שהוחזר משלב 2.
ב כנגד המספר 2 שהוחזר משלב 2.
ר כנגד המספר 3 שהוחזר משלב 2.
ה כנגד המספר 4 שהוחזר משלב 2.
ם כנגד המספר 5 שהוחזר משלב 2.
אני רוצה שנעצור לרגע לפני שאנו ממשיכים ונתבונן.
טווח התאים C7:C11 נראים ריקים מכל תוכן, נכון?
אז רגע רגע…לכאורא הגענו ליעד והמשימה כמעט הושלמה…
ממש פנטסטי!
אולי פשוט נבצע ספירה באמצעות פונקציית counta על כל טווח C2:C11 והתוצאה תהא 5…
מה אתם אומרים?
התשובה היא - זהו שלא…
אם תנסו זאת בעצמכם תגלו שפונקציית counta תחזיר 10 ולא 5!
אתם יודעים מדוע?
הסיבה נעוצה במה שכתבתי בארוכה במאמר כאן אודות "יסוד המחלוקת" בין פונקציית counta לבין פונקציית len.עייינו שם…
אותה לוגיקה סובבת והולכת לה גם כאן, כי למרות שתאים C7:C11 נראים ריקים לגמרי הרי הם "תחת פיקודה ושליטתה" של פונקציית mid והרי הם בפוטנציאל "תמידי" לכתוב בהם טקסט ממשי…(אם רק בעל הגיליון יחליט לכתוב בתא A2 עוד 5 תווים נוספים למשל "אברהםאברהם")
ולכן - כלפי פונקציית counta תאים אלו נחשבים כבר עתה כמלאים בטקסט כלשהוא!
זו הסיבה שפונקציה זו אינה רלוונטית בשלב זה ויש צורך להשלים את ההליך עם פונקציית code וכפי שאפרט בשלב הבא, (פונקציה זו מתייחסת לתוכן תא "ממשי" בלבד ולא לתוכן "פוטנציאלי", זו הסיבה להחזר שגיאת value כלפי התאים "שנראים" ריקים)
תחשבו על זה! זו לוגיקה ממש נפלאה!
הלאה, נתקדם שלב…
שלב 4:
זהו מבנה הפונקציות בתא D2:
קוד:
=ARRAYFORMULA(CODE(MID(A2,TRANSPOSE(COLUMN(A:J)),1)))
הנה כמה מילים על פונקציית code באקסל/גוגל שיטס.
פונקציית זו יודעת לתרגם אות ראשונה או ספרה ראשונה (כאשר מדובר במחרוזת) בתא לקוד "נומרי". (כלומר מספרי)
לכל אות ומספר במקלדת יש קוד מספרי המציין אותה, ופונקציה זו יודעת מהו המספר העומד מאחורי כל סימן.
הפונקציה גם יודעת לתרגם תווים בלתי נראים, כמו תווי ASCII למספרים.
(בקצרה אציין כי ישנם הבדלים בהחזר הפונקציה בין האקסל לגוגל שיטס. לדוגמא עבור התו "א" יוחזר באקסל המספר 224 ואילו בגוגל שיטס יוחזר 1488.
הסיבה לכך שבאקסל הפונקציה מחזירה קוד על פי קידוד תווים "תלוי מערכת" ולא את הקוד ה - UNICODE "המלא".
לעומת זאת בגוגל שיטס הפונקציה מחזירה את הקידוד המלא של UNICODE ובדוגמא של התו "א" יוחזר כקוד עשרוני המספר 1488 שהוא למעשה תרגום של הקוד ההקסדצימלי U+05D0 ראו כאן וכאן.
אציין כי גם באקסל וגם בגוגל שיטס קיימת פונקציית unicode ובה מוחזרים מספרים שווים על פי קידוד יוניקוד "המלא". ואכמ"ל…)
במקרה שלנו, הפונקציה מחזירה את הקוד המספרי עבור כל תו שהוחזר בשלב 3.
תוכלו להבחין בטווח D7 עד D11 בשגיאת value.
זה הכי לגיטימי בעולם…הפונקציה "אומרת" למשתמש הגיליון שיש פה שגיאה ויש צורך לכתוב תו (כזה או אחר) בכל תא שכלול בטווח C7:C11.
וכאן יש לנו לזכור שוב במה שביארתי לעיל (בשלב 3) שפונקציה זו מתייחסת לתוכן תא "ממשי" בלבד ולא לתוכן "פוטנציאלי", זו הסיבה להחזר שגיאת value כלפי התאים "שנראים" ריקים.
וכעת ניתן להגיע לשלב הבא והסופי…
שלב 5:
זהו מבנה הפונקציות בתא E2:
קוד:
=ARRAYFORMULA(COUNTIF(CODE(MID(A2,TRANSPOSE(COLUMN(A:J)),1)),">1"))
פונקציית countif סופרת את מערך התאים (שהוחזר בשלב 4) על פי תנאי - 1< כלומר גדול מ1.
בכל התאים שהוחזרה בהם שגיאת value - הערך שבהם אינו מספר אלא "טקסט בעלמא" וקל וחומר שאינו גדול מ1.
והנה הגענו לתוצאה - 5
אכן, המילה אברהם מכילה 5 תווים.
האם נעשה שימוש בפונקציית len בכל התהליך?
התשובה היא - לא!!!
ואם כן, "האתגר" הושלם בהצלחה!
לסיום, אני מוכרח להוסיף עוד כמה מילים…
אני לא באמת מצפה שכאשר תרצו לבצע ספירת תווים בתא אקסל/שיטס בזמן אמת - תבצעו זאת באמצעות פתרון 4 שהוסבר לעיל.
פתרון זה דורש שימת לב מיוחדת מלבד זאת שהוא מורכב ואפילו "מתיש" במידת מה…
בזמן אמת, הכי קל, פשוט ונוח להשתמש בפונקציית len המתוחכמת והנפלאה.
וכל כוונתי בפתרון זה שהבאתי רק להמחיש לפניכם עוד דרך עד לפתרון ופשוט להנות מהיופי, מהלוגיקה והגאונות של האקסל/שיטס.
וכמו שכתבתי והמלצתי במאמר כאן - פשוט תהנו מהדרך ולא רק מהתוצאה!
ואפרופו "אתגרים" - זו עוד הוכחה לעצמנו שאם רוצים - אין זו אגדה…
"יגעת ומצאת תאמין…"
לינק לגיליון שיטס הכולל 4 דרכים לספירת תווים בתא אקסל/גוגל שיטס - מצורף כאן.
הנושאים החמים