if בלי "אם לא", מקונן בfilter בגוגל שיטס
-
כשאני כותב if בתוך filter אני חייב לתת לו שני צדדים, מכיון שאם אני משאיר את הצד השני של התנאי ריק זה מתקבל כנתון קבוע שלא יכול להיות בפילטר.
דוגמא=filter(if(D1="שעות",A:C,B:B=<15:00,""
גוגל שיטס יחזיר שגיאה *הפונקציה FILTER מכילה גדלים לא תואמים של טווחים. ספירת השורות שהייתה צפויה להתקבל: ****. ספירת העמודות: 1. ספירת השורות שהתקבלה בפועל: 1, ספירת העמודות: 1.
הסיבה לזה היא מכיון שלא נתתי לו בדיקה של כל הטווח שבחרתי אלא רק של "" ריק וזה בעצם ערך יחיד
הבעיה שלי היא שאני מעוניין לעשות תנאי בפילטר, דהיינו אם G1 שווה ל X אז אני רוצה לקבל רק טווח שעונה לקריטריון, ואם G1 אינו שווה לX אני רוצה לקבל את כל הטווח.
מה שעשיתי זה if=filter(A:C,if(g1="X",B:B>15,""
ואז יוצר שאם G1 שונה מ X אז אני מקבל את השגיאה הנ"ל
מה שעשיתי זה שהכנסתי תנאי שתמיד מתקיים במקום ""
לדוגמא=filter(A:C,if(g1="X",B:B<1000000,""
מכיון שכל הנתונים שלי קטנים ממיליון אז התנאי תמיד מתקיים
עד כאן הכל טוב
הבעיה שאני חווה איטיות נוראית בגיליון
כשקצת קראתי על זה הבנתי שהחישובים המיותרים שנוצרו כך הם נוראיים, וכאן השאלה שלי כיצד ניתן לאכול את העוגה ולהשאיר אותה שלימה
דהיינו גם לא לחשב סתם וגם להשאיר את הif במקומו
תודה רבה
ניסיתי הרבה זמן לתמצת את השאלה ולכתוב אותה באופן הברור ביותר, מקווה שהצלחתי -
@שמחה-זו-הסיסמא
לא קראתי הכל אבל אולי תעשה בתנאי שתמיד מתקיים 1=1, לא יעזור? -
דבר ראשון, שים לב - הפונקציות שלך לא שלמות, הם לא יכולות לרוץ ככה. (לא סגרת את הסוגריים), כך שזה קצת מערפל את השאלה.
גם לא הבנתי כל כך מה התכוונת, יש לי 3 אפשרויות:- התכוונת להתנות האם לסנן או לא, לפי ערך תא G1, שאם הוא שווה ל "X" יש לסנן לכל מה שהשעה בו פחותה מ 15:00, ואם לא להביא הכל בלי סינון, וכמו שכתבת
@שמחה-זו-הסיסמא כתב בif בלי "אם לא", מקונן בfilter בגוגל שיטס:
הבעיה שלי היא שאני מעוניין לעשות תנאי בפילטר, דהיינו אם G1 שווה ל X אז אני רוצה לקבל רק טווח שעונה לקריטריון, ואם G1 אינו שווה לX אני רוצה לקבל את כל הטווח.
בשביל זה, צריך לעשות IF חיצונית לפילטר.
=ARRAYFORMULA(IF("x"=G1,FILTER(A:C,HOUR(B:B)<15),A:C))
- אפשרות שניה - התכוונת לסנן לפי אחד משתי תנאים, ולכן כתבת IF בשביל זה.
בשביל זה צריך להשתמש ב OR, דא עקא, שבOR יש את אותה שגיאה שכתבת כי הוא מתאים רק לנתונים יחידים ולא למערך, אז לזה צריך להשתמש ב BITOR, ככה:
=ARRAYFORMULA(FILTER(A:C,BITOR(HOUR(B:B)<15,"x"=G1))
- אפשרות שלישית - התכוות למשהו אחר, ואני לא קראתי את דבריך מספיק בעיון (וסליחה).
אוכל לענות על שאלה אחת שהבנתי:
גוגל שיטס יחזיר שגיאה *הפונקציה FILTER מכילה גדלים לא תואמים של טווחים. ספירת השורות שהייתה צפויה להתקבל: ****. ספירת העמודות: 1. ספירת השורות שהתקבלה בפועל: 1, ספירת העמודות: 1.
הסיבה לזה היא מכיון שלא נתתי לו בדיקה של כל הטווח שבחרתי אלא רק של "" ריק וזה בעצם ערך יחידיש לזה פתרון שאני משתמש איתו, פונקציית MAKEARRAY, תוכל לראות עליה עוד בקישור זה https://www.benlcollins.com/spreadsheets/makearray-function/
ותוכל כמובן לחפש גם בעברית - זה מה שמצאתי מחיפוש מהיר של GOOGLE SHEETS MAKEARRAY. -
@Y-Excel-Access כתב בif בלי "אם לא", מקונן בfilter בגוגל שיטס:
MAKEARRAY
תודה רבה על המידע המועיל, עזרת לי מאוד
-
@Y-Excel-Access כתב בif בלי "אם לא", מקונן בfilter בגוגל שיטס:
בשביל זה צריך להשתמש ב OR, דא עקא, שבOR יש את אותה שגיאה שכתבת כי הוא מתאים רק לנתונים יחידים ולא למערך, אז לזה צריך להשתמש ב BITOR, ככה:
זו תשובה מעולה כדי לסנן עבור 1 מ2 תנאים
מה אתה מציע לעשות אם יש לי טבלה של 7 עמודות שאני רוצה שיוכלו לסנן אותה לפי כל אחת מהעמודות
למשלname date time Details sender אברהם 20/5/2022 15:32 XXX המורה שלמה אני צריך סינון לפי שם, רק בתאריך מסויים או בין תאריכים, רק עם הפרטים שווים ל... או רק ממורה מסויים
אני אצטרך לכתוב filter עבור כל צירוף שקיים ? -
@שמחה-זו-הסיסמא דבר ראשון - אפשר לקנן BITOR, אבל זה יהיה קצת מגושם 7 רמות קינון...
אבל פשוט - למה ללכת בכלל על FILTER כשיש לך את QUERY? פשוט לעשות
=QUERY({A2:V14},"SELECT * WHERE Col1 = 'אברהם' OR Col2 > 1 ...(וכו')" )
(באמת אני מרבה להשתמש בQUERY פי כמה מ FILETR, SORT וכד', פשוט פונקציה אחת שבוחרת מתוך מערך, ממיינת ומסננת הכי טוב שאפשר, ובפרט אחרי החידוש שאפשר לעשות פונקציות בעלות שם וביטויי למדה - נולדו פתאום בתחום גם הרבה קיצורי דרך ואפשרויות חדשות)