-
@מאסטר-באקסל אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
מה רע באיך שכתבתי?
הניחוש שלי היא שבגלל אופן הפעולה שתיארת למעלה, התאים בגליון 1 שנמחקו - לא נחשבים ריקים, (ניקוי ערך לא הופך תא לריק, הוא הופך אותו לתא שמכיל מחרוזת ריקה) ואז הפונקציה COUNTBLANK מחזירה 0, מה שגורם לכך ש:
OFFSET(ROWS('A:A')-COUNTBLANK('A:A')+1,0) == OFFSET(ROWS('A:A')-0+1,0) // זליגת תחום שורותאיך כותבים את זה נכון?
אפשרות א:
תשנה את הפונקציה clear כך שהתאים יימחקו לגמריאפשרות ב: תשתמש בפונקציה אחרת לחישוב השורה הראשונה הריקה: יש פונקציה מאוד מהירה שכתבו ב StackOverflow שמחזירה את השורה הראשונה הריקה, או הראשונה עם מחרוזת ריקה
function getFirstEmptyRowByColumnArray() { var spr = SpreadsheetApp.getActiveSpreadsheet(); var column = spr.getRange('A:A'); var values = column.getValues(); // get all data in one call var ct = 0; while ( values[ct] && values[ct][0] != "" ) { ct++; } return (ct+1); }עכשיו תכתוב:
OFFSET(getFirstEmptyRowByColumnArray(),0)@OdedDvir אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
@מאסטר-באקסל אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
מה רע באיך שכתבתי?
הניחוש שלי היא שבגלל אופן הפעולה שתיארת למעלה, התאים בגליון 1 שנמחקו - לא נחשבים ריקים, (ניקוי ערך לא הופך תא לריק, הוא הופך אותו לתא שמכיל מחרוזת ריקה) ואז הפונקציה COUNTBLANK מחזירה 0, מה שגורם לכך ש:
OFFSET(ROWS('A:A')-COUNTBLANK('A:A')+1,0) == OFFSET(ROWS('A:A')-0+1,0) // זליגת תחום שורותאיך כותבים את זה נכון?
אפשרות א:
תשנה את הפונקציה clear כך שהתאים יימחקו לגמרידבר ראשון, תודה!!
דבר שני לא זאת הסיבה כי אני רוצה תא ריק ראשון בגיליון 2 המחיקה היא בגיליון 1@OdedDvir אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
אפשרות ב: תשתמש בפונקציה אחרת לחישוב השורה הראשונה הריקה: יש פונקציה מאוד מהירה שכתבו ב StackOverflow שמחזירה את השורה הראשונה הריקה, או הראשונה עם מחרוזת ריקה
function getFirstEmptyRowByColumnArray() { var spr = SpreadsheetApp.getActiveSpreadsheet(); var column = spr.getRange('A:A'); var values = column.getValues(); // get all data in one call var ct = 0; while ( values[ct] && values[ct][0] != "" ) { ct++; } return (ct+1); }
עכשיו תכתוב:
OFFSET(getFirstEmptyRowByColumnArray(),0)לקחתי את הפונקציה הזאת והיא לא עשתה שום דבר
גם אחרי ששמתי את ה- OFFSET
למה? -
@OdedDvir אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
@מאסטר-באקסל אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
מה רע באיך שכתבתי?
הניחוש שלי היא שבגלל אופן הפעולה שתיארת למעלה, התאים בגליון 1 שנמחקו - לא נחשבים ריקים, (ניקוי ערך לא הופך תא לריק, הוא הופך אותו לתא שמכיל מחרוזת ריקה) ואז הפונקציה COUNTBLANK מחזירה 0, מה שגורם לכך ש:
OFFSET(ROWS('A:A')-COUNTBLANK('A:A')+1,0) == OFFSET(ROWS('A:A')-0+1,0) // זליגת תחום שורותאיך כותבים את זה נכון?
אפשרות א:
תשנה את הפונקציה clear כך שהתאים יימחקו לגמרידבר ראשון, תודה!!
דבר שני לא זאת הסיבה כי אני רוצה תא ריק ראשון בגיליון 2 המחיקה היא בגיליון 1@OdedDvir אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
אפשרות ב: תשתמש בפונקציה אחרת לחישוב השורה הראשונה הריקה: יש פונקציה מאוד מהירה שכתבו ב StackOverflow שמחזירה את השורה הראשונה הריקה, או הראשונה עם מחרוזת ריקה
function getFirstEmptyRowByColumnArray() { var spr = SpreadsheetApp.getActiveSpreadsheet(); var column = spr.getRange('A:A'); var values = column.getValues(); // get all data in one call var ct = 0; while ( values[ct] && values[ct][0] != "" ) { ct++; } return (ct+1); }
עכשיו תכתוב:
OFFSET(getFirstEmptyRowByColumnArray(),0)לקחתי את הפונקציה הזאת והיא לא עשתה שום דבר
גם אחרי ששמתי את ה- OFFSET
למה?@מאסטר-באקסל תוכל לרשום בדיוק את כל הקוד שעשית?
-
function nisui2() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('גיליון 2'), true); spreadsheet.getRange('A2').activate(); spreadsheet.getCurrentCell().offset(rows('A:A')-countblank('A:A')+1,0), 0).activate(); spreadsheet.getRange('\'גיליון 1\'!B7:L35').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('גיליון 1'), true); spreadsheet.getRange('D7:E35').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('D3:I3').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('D3').activate(); }; -
function nisui2() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('גיליון 2'), true); spreadsheet.getRange('A2').activate(); spreadsheet.getCurrentCell().offset(rows('A:A')-countblank('A:A')+1,0), 0).activate(); spreadsheet.getRange('\'גיליון 1\'!B7:L35').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('גיליון 1'), true); spreadsheet.getRange('D7:E35').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('D3:I3').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('D3').activate(); };@מאסטר-באקסל אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
spreadsheet.getCurrentCell().offset(rows('A:A')-countblank('A:A')+1,0), 0).activate();תנסה במקום
spreadsheet.setActiveCell(spreadsheet.getDataRange().offset(spreadsheet.getLastRow()-1, 0, 1, 1)); -
@OdedDvir אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
spreadsheet.setActiveCell(spreadsheet.getDataRange().offset(spreadsheet.getLastRow()-1, 0, 1, 1));
מדהים!!
עובד יפי!!
תודה!! -
סליחה על הבורות,
אבל אפשר הסבר על השוני בנוסחאות,
ועל צורת הפעולה שלו?
(של ה- OFFSET)
בכדי שאני ידע להיזהר משגיאות בהפעלה שלו,
תודה -
סליחה על הבורות,
אבל אפשר הסבר על השוני בנוסחאות,
ועל צורת הפעולה שלו?
(של ה- OFFSET)
בכדי שאני ידע להיזהר משגיאות בהפעלה שלו,
תודה@מאסטר-באקסל אמר בעזרה בכתיבת SKRIPT לגוגל שיטס.:
אבל אפשר הסבר על השוני בנוסחאות,
ועל צורת הפעולה שלו?
(של ה- OFFSET)שני הפרמטרים האחרונים הם אופציונאליים, ומציינים את טווח היעד הנבחר (כמה שורות וכמה עמודות)
אם משמיטים אותם, הפונקציה תחזיר טווח הזהה לטווח הפעיל.
למשל:
אם הטווח הפעיל הוא לא תא אחד, אלא קבוצת תאים, למשל A1:B2 (=4 תאים) הפונקציה מחזירה טווח של 4 תאים:offset(1,1) // == B2:C3אלא אם כן תציין בפירוש שברצונך לקבל רק תא אחד
offset(1,1,1,1) // == B2ציינתי אותם בקוד לייתר ביטחון, למרות שבמקרה שלך הם מיותרים, כי התא הפעיל הוא יחיד A1 וממילא התוצאה שתתקבל היא גם תא אחד.
-
תודה
אבל התכוונתי לדעת על הפרמטר הראשון של ירידת שורות,
איך הוא מוצא את התא הראשון הריק? -
תודה
אבל התכוונתי לדעת על הפרמטר הראשון של ירידת שורות,
איך הוא מוצא את התא הראשון הריק?@מאסטר-באקסל
מסתבר שיש פונקציה מובנית ()getLastRow שמחזירה את מספר השורה האחרונה הריקה. הפחתתי 1 כי אתה משתמש בהיסט (offset) וצריך לזוז שורה פחות
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות