תמונת מקור - Leonardo AI
את המאמר הזה אפתח בשאלה, מהו המכנה המשותף בין פונקציית counta לבין פונקציית len?
שתיהן מבצעות פעולת ספירה…
נכון מאוד!
פונקציית counta סופרת תאים שאינם ריקים ומכילים טקסט.
ופונקציית len סופרת את ס"ך התווים שבתוך התא.
כאשר ההפניה היא לתא בודד שהוא ריק לחלוטין מכל וכל - התוצאה בשתיהן תהיה 0.
על כך אין עוררין!
ומה קורה שהתא המדובר ריק ואינו ריק?
התבלבלתם קצת? לא נורא…
תקראו עד הסוף…
ובכן, מצורף לפניכם צילום מסך מתוך הגיליון המצורף להלן בלינק,
בעמודה B קיימת פונקציית if די פשוטה שמחזירה "כן" במידה והשם "אברהם" מופיע בתא בעמודה A.
אם התנאי אינו מתקיים - מוחזר תא ריק ככה "".
זהו מבנה הפונקציה בתא B2.(למשל)
קוד:
=IF(A2="אברהם","כן","")
בעמודה D קיימת פונקציית counta שסופרת את התא שבעמודה B.
זהו מבנה הפונקציה בתא D2.(למשל).
קוד:
=COUNTA(B2)
אנו רואים שגם כלפי תא B2 וגם כלפי תא B3 התוצאה היא אחת. כלומר שתאים אלו מכילים ערך של טקסט כלשהו ולכן מוחזר 1.
רגע רגע...אבל תא B3 הוא נראה ריק .אז למה הפונקציה סופרת אותו?
לפני שנראה את התשובה לכך. נעצור כאן ותכף נשוב לנקודה זו…
בעמודה F קיימת פונקציית len שסופרת כמה תווים נכתבו בתא שמוזן בארגומנט.
אנו רואים שכלפי תא B3 התשובה היא 0.
כלומר 0 תווים!
וכלפי תא B2 התשובה היא 2.(המילה "כן" שנכתבה שם מורכבת מ2 תווים...).
מה קורה פה בעצם עם תא B3?
האם הוא מלא בערך כל שהוא או שהוא ריק?
התשובה היא - שתא B3 אמנם מכיל ערך של טקסט אבל לא הכי "קונבנציונאלי".
כי מדובר בטקסט של פונקציה ובמקרה כאן מדובר על פונקציית if.
ומכאן השוני בתוצאות ההחזרים בין פונקציית counta לפונקציית len.
אנסה להסביר את "יסוד המחלוקת" בין שתי הפונקציות הנ"ל עד כמה שניסיתי לחקור ולהעמיק בנושא זה.
אתחיל בפונקציית len.
פונקציה זו סופרת מספר תווים של טקסט בתנאי שמדובר בטקסט פשוט שכתוב "בפועל" ולא רק "בכוח".
פונקציית len מתייחסת בכל הקשור "למלל" של פונקציה רק "כהיכי תימצי" להחזר טקסט כלשהו מהפונקציה.
כיון שעדיין מדובר פה רק בטקסט בגדר "בכוח בלבד" לכן מבחינת פונקציית len הפונקציה כאילו איננה ומספר התווים שבתא נותר על 0.
רק כאשר מוחזר טקסט "ממשי" שיצא לפועל (חשוב להדגיש! הפונקציה מחשבת גם רווחים. מפני שלמרות שאינם נראים אך הם "הוקלדו" עם מקש רווח במקלדת ולכן הם עדיין נחשבים כטקסט "ממשי" במובן מסוים) בעמודה B כמו בתא B2 אז - הפונקציה סופרת את מספר התווים ומחזירה 2 (כלפי תא B2 הנ"ל)
מנגד…
פונקציית counta "שבודקת" את תוכן התא ומחזירה תוצאה של 1 או 0,-מתייחסת לתא שנכתב בו פונקציה, כטקסט לכל דבר ועניין.
כי נכון שפונקציה היא "היכי תימצי" לערכים שונים שיוחזרו לתא שנכתבה בו הפונקציה.
אך מלל של פונקציה- כבר עתה הוא טקסט כלשהו…
(מי שמפקפק בכך, שיסיר את סימון השווה בלבד בתחילת הפונקציה…
אז רק סימון השווה עושה פה את ההבדל בין טקסט "נסתר" לטקסט "גלוי"...תחשבו על זה...)
ואם כן יש לדון את "הטקסט הנסתר" כתוכן כל שהוא שנכתב בתא. וממילא אין לתא דין של "ריק מתוכן"!
(ובאגב. ק"ו שמדובר בטקסט של החזר שגיאה כמו n/a או value וכדומה)
זו הסיבה שגם בתא D3 הפונקציה מחזירה תוצאה 1.
מעתה יותר מובנת הסיבה שגם פונקציה זו מתייחסת לרווחים כטקסט ותא שכזה נספר 1.
(במובן מסוים הדברים הם ק"ו. לאור מה שהוספתי בסוגריים לעיל כלפי פונקציית len)
כעת. אם נרצה "לשפוט" על פי מה שעינינו רואות בלבד בתא…
זהו יהיה פלונטר, כי גם ההגדרה של "עינינו רואות" נתונה לשיפוט...
זהו עד כאן!
מקווה שההסבר מובן וברור…
ומקווה שנהניתם במסע הזה…
לינק לגיליון שיטס אודות השוני בין פונקציות counta & len - מצורף כאן.