תמונת מקור - Leonardo AI
בּזוהר הקדוש פרשת נח (דף נ"ט עמוד ב' בתוספתא) איתא:
"לָמָּה נֹחַ נֹחַ תְּרֵי זִמְנֵי, אֶלָּא כָּל צַדִּיק וְצַדִּיק דִּי בְּעָלְמָא אִית לֵיהּ תְּרֵין רוּחִין, רוּחָא חַד בְּעָלְמָא דִין וְרוּחָא חַד בְּעָלְמָא דְאָתֵי, וְהָכִי תִּשְׁכַּח בְּכָלְהוּ צַדִּיקִי, משֶׁה מֹשֶׁה, יַעֲקֹב יַעֲקֹב, אַבְרָהָם אַבְרָהָם, שְׁמוּאֵל שְׁמוּאֵל, שֵׁם שֵׁם…"
ובספר "שער מאמרי רשב"י" (פרשת נח) לרבינו המהרח"ו ז"ל פירש מימרא זו וזהו לשונו:
"הצדיקים נשמתם התחתונה שוכנת תוך גופם. ונשמתם העליונה עומדת צל על ראשו, בסוד אור מקיף, ומשם שואבת לו חיים מלמעלה תמיד, ומריקה אל נשמתו אשר בתוכו. ויש לו תרין רוחין, חד בעלמא דאתי – היא העליונה, שהיא בסיתום למעלה…וחד לתתא בעלמא דין... במקום הנגלה... הנקרא עולם הזה, וזה סוד משה משה, שמואל שמואל".
ומורינו הרב אליהו דסלר זצ"ל בספרו "מכתב מאליהו" (חלק ג' עמודים 27-33) הסביר את כל העניין בעומק רב וזהו תורף דבריו ז"ל:
"לנשמה יש שני חלקים. החלק העליון, דהיינו הפנימי, שקשור במקורו בעולם העליון, והחלק התחתון החיצוני, השוכן בתוך הגוף. החלק העליון הוא בסיתום - בהסתר. אורו הפנימי אינו מתגלה לאדם בעודו בעולם הזה, רק החלק התחתון מתגלה לו, כי החלק הפנימי של הנשמה מכוסה על ידי טמטום הלב.
אילו היה אורה הפנימי של הנשמה העליונה מאיר באדם בכל גילוייו בלי חציצת הטמטום, הרי בטילה הייתה כל אפשרות של בחירה, והאדם היה כבר עומד במדרגת עולם הבא. כי הבחירה תיתכן רק במקום ההסתר, במקום המחלוקת, כשיש אפשרות של התנגדות לאמת, של התעלמות ממנו על ידי חושך עולם הזה. זהו הצמצום שצמצם הקב"ה את כבודו, והסתירו מן העולם, כדי ליצור את אפשרות הבחירה. מלא כל הארץ כבודו, אלא שלבנו אטום ומטומטם מלראותו ומלהשיגו וטמטום הלב הזה הוא המאפשר את הבחירה.
כל עבודת יצר הרע היא להשכיח מהאדם דברים ברורים, ולכסות בשקריו את האמת הפשוטה. בשעת יצר הרע לית דמדכר ליה ליצר הטוב. פירושו, שהאמת מכוסה לגמרי מהאדם בשעה ששולט בו יצר הרע.
האדם הפשוט אינו זוכה לגילויים מהנשמה הפנימית, ואחוז בה רק בקצה האחרון שבה, שהיא נקודת עולם הבא שיש בתוך לבו של כל יהודי בזכות ברית אבות – לא מאסתים ולא געלתים. אך גם נקודה זו מכוסה ואטומה בגשמיות וטמטום הלב. אפילו המתפעל והמתרגש, ומתקרב על ידי זה לרוחניות, הרי רק נשמתו החיצונית פועלת כאן, אבל את נשמתו הפנימית קשה להביא לידי התגלות, כי היא רחוקה ממנו.
אולם לצדיקים יש חיבור עם נשמתם העליונה. הם מקבלים הארות ממנה גם בעודם עלי אדמות. כנזכר לעיל בשם האר"י ז"ל - ומשם שואבת לו חיים מלמעלה תמיד, ומריקה אל נשמתו אשר בתוכו. אך עצם נשמתם העליונה מוסתרת גם מהם, כי לולא זאת הייתה מתבטלת אצלם הבחירה,
כאמור. ככל שיגדל הצדיק בתורה ובמצוות ובזיכוך טמטום לבבו, כן יזכה להארה ולפנימיות יתר.
בהכפלת שמות הצדיקים רומזת התורה על הארת נשמתם העליונה על התחתונה". עכ"ל המכתב מאליהו.
ועיין עוד בפירוש "דעת זקנים" לבעלי התוספות (בראשית ו'.ט') וזהו לשונו:
"אלה תולדות נח נח…וכל שנכפל שמו בידוע שהוא צדיק כמו אברהם אברהם. ומקשי' בירושלמי והכתיב תרח תרח ומשני הדא אמרה שעשה תרח תשובה".
והן הן הדברים. נפלא מאוד!
כעת, בואו ותראו איך כל הנ"ל קשור לאקסל ולעולמן של הפונקציות…
ובכן אפרופו מה שמצינו בפסוק "אֵלֶּה תּוֹלְדֹת נֹחַ נֹחַ אִישׁ צַדִּיק תָּמִים הָיָה בְּדֹרֹתָיו" (בראשית ו'.ט') שנאמר כפילות של תיבת "נח" פעמיים ועל כך הקשה בזוהר הקדוש "לָמָּה נֹחַ נֹחַ תְּרֵי זִמְנֵי". להבדיל בין קודש לחול…כאשר קיימת מחרוזת מילים בתא אקסל / שיטס ואנו מעוניינים לבדוק האם קיימת תיבה אחת (או יותר) שהיא כפולה כלומר, שהיא כתובה פעמיים (או יותר) באותה מחרוזת (ולא דווקא בצמידות וסמיכות כמו בתיבות "נח נח").
האם זה אפשרי?
התשובה היא - כן ובהחלט כדלהלן!
לפניכם צילום מסך (מתוך הגיליון שיטס המצורף בלינק להלן) ובו בדיקה זו מפורטת שלב אחר שלב.
שלב 1:
בתא A2 יש להזין את המחרוזת טקסט.
במקרה שלנו, מחרוזת הטקסט היא "אברהם יצחק יעקב אברהם" וכפי שאתם רואים המילה "אברהם" כתובה פעמיים כלומר, יותר מפעם בודדת.
שלב 2:
זהו מבנה הפונקציות בתא B2:
קוד:
=TRANSPOSE(SPLIT(A2," "))
אתם מכירים את פונקציית split (בגוגל שיטס, באקסל - המקבילה שלה היא פונקציית textsplit). נכון?
הזכרתי אותה פעמים רבות במאמריי הקודמים.
בקצרה - פונקציה זו מפצלת את הטקסט שהוזן כהפניה לתא בארגומנט הראשון שבה לפי "סימן זיהוי" שהוזן בארגומנט השני שבה.
גם כאן, אנו אומרים לפונקציה לפצל את המחרוזת טקסט בתא A2 לפי סימן זיהוי של תו רווח (כזה " ").
ההחזר כאן הוא ערכים מפוצלים במערך אופקי. לשם הנוחות והמחשת השלבים הוספתי את פונקציית transpose שהופכת את המערך - מאופקי לאנכי.
שלב 3:
זהו מבנה הפונקציות בתא C2:
קוד:
=ARRAYFORMULA(COUNTIF(B2:B5,B2:B5))
בשלב זה, "אנו אומרים" לפונקציית countif לבדוק ולבצע ספירה עבור כל תא בנפרד כמה פעמים הוא (כלומר, בערך שנכתב בו) מופיע בכל המערך (שהוחזר משלב 2 דהיינו הטווח B2:B5).
על הטכניקה הזו כתבתי באריכות במאמר כאן.
והתוצאות הן:
עבור תא B2 (אברהם): הפונקציה סורקת את כל הטווח (B2:B5) ובודקת כמה פעמים מופיע הערך אברהם?
התוצאה: 2.
עבור תא B3 (יצחק): הפונקציה סורקת את כל הטווח (B2:B5) ובודקת כמה פעמים מופיע הערך יצחק?
התוצאה: 1.
עבור תא B4 (יעקב): הפונקציה סורקת את כל הטווח (B2:B5) ובודקת כמה פעמים מופיע הערך יעקב?
התוצאה: 1.
עבור תא B5 (אברהם): הפונקציה סורקת את כל הטווח (B2:B5) ובודקת כמה פעמים מופיע אברהם?
התוצאה: 2.
בגוגל שיטס יש לעטוף את הפונקציה בפונקציית arrayformula. אך באקסל אין צורך בכך ויש להשמיטה.
שלב 4:
זהו מבנה הפונקציה בתא D2:
קוד:
=SUM(C2:C5)
בשלב זה פונקציית sum סוכמת את המערך שהוחזר משלב 3.
למה צריך את זה, אתם שואלים? חכו ותראו…
התוצאה היא = 6 (6 = 2 + 1 + 1 + 2)
שלב 5:
זהו מבנה הפונקציה בתא E2:
קוד:
=COUNTA(B2:B5)
בשלב זה, פונקציית counta סופרת את מספר התאים בטווח B2:B5 שאינם ריקים. כלומר שהוזן בהם ערך כל שהוא.
והתוצאה היא = 4
שלב 6:
זהו מבנה הנוסחה בתא F2:
קוד:
=E2<>D2
זהו השלב האחרון. אחרון אחרון חביב…
בשלב זה, מתקיימת בדיקה האם הערך בתא E2 שונה (זהו הסימון <>) מהערך בתא D2.
הרעיון הגאוני כאן הוא - שבכל פעם שתהא תיבה (אפילו אחת) כתובה יותר מפעם אחת במחרוזת המקור - הערך בתא D2 יהא גדול ושונה מהערך בתא E2.
כאשר תוצאת הבדיקה היא - כן, ההחזר יהא true כלומר, אמת / נכון.
וכאשר תוצאת הבדיקה היא - לא, ההחזר יהא false כלומר, שקר / לא נכון.
נפלא. נכון?
והנה "הדובדבן שבקצפת"...
בצילום מסך הנ"ל (מתוך הגיליון המצורף בלינק להלן) תוכלו לראות את כל השלבים הנ"ל "מקופלים" זה בתוך זה כנוסחה אחת ארוכה…
זהו מבנה הפונקציות בתא C4:
קוד:
=COUNTA(TRANSPOSE(SPLIT(A4," ")))<>ARRAYFORMULA(SUM(COUNTIF(TRANSPOSE(SPLIT(A4," ")),TRANSPOSE(SPLIT(A4," ")))))
בצילום מסך הנ"ל תוכלו להבחין בעוד בונוס קטן בתא D4.
(רק) כאשר ההחזר בתא C4 הוא true, יוחזרו בתא D4 כל התיבות הכפולות (או יותר) שבמחרוזת.
אך כאשר ההחזר בתא C4 הוא false. תא D4 יישאר ריק.
זהו מבנה הפונקציות בתא D4:
קוד:
=IFNA(ARRAYFORMULA(TEXTJOIN(" ", TRUE, UNIQUE(FILTER(SPLIT(A4, " "), COUNTIF(SPLIT(A4, " "), SPLIT(A4, " ")) > 1)))),"")
במקרה שלנו, ההחזר הוא - "נֹחַ נֹחַ".
נ.ב כאמור, זהו בונוס בלבד. אך למי שירצה להבין את מהלך הדברים, אדרבה, תן לחכם ויחכם עוד…
ועד כאן לאקסל ולעולמן של הפונקציות…
מקווה שנהניתם…
לינק לגיליון שיטס הכולל בדיקה עבור חזרתיות של מילים בתוך מחרוזת טקסט באקסל / גוגל שיטס - מצורף כאן.
הנושאים החמים