בעיית זמן ריצה באקסל...

צבתות

New member
בעיית זמן ריצה באקסל...

הקובץ שיצרתי עובד מצויין. הבעיה היא, שככל שמוסיפים שמות ונתונים, זמן הריצה שלוקח לאקסל לחשב את כל התאים המקושרים הוא ארוך מאוד, עד כמעט בלתי נסבל (אקסל מראה "מחשב תאים X%"). בעיה נוספת שנוצרת, אני מאמין עקב הבעיה הזו, היא שאקסל לא מחשב נכון חלק מהנתונים. למשל, כתבתי נוסחה שאמורה להציג את מספר השורה של התא, פחות 6. ז"א אם מספר השורה הוא 7 למשל, אז התא יציג 1. הנוסחה הייתה: row(A7)-6 כשהעתקתי את הנוסחה לשורה הבאה, התוצאה הייתה 2, אח"כ 3, וכן הלאה. אלא שפתאום באמצע, אותה נוסחה מביאה תוצאה לא נכונה. פעולת ההעתקה שביצעתי לא השתנתה, אבל לפתע התוצאה כן. בכל מקרה, השאלה שלי היא כזו: הקובץ מורכב מ"טפסים" להכנסת נתונים, וטבלאות שמקבלות מידע מאותם טפסים. יש איזו אפשרות ליצור העתק של אותם טפסים בקובץ חיצוני, על מנת היוכלו להכניס אליהם רק נתונים. ואח"כ להפעיל את הקובץ המקושר, שיעבוד מצידי שעה לבצע את כל החישובים הנחוצים?
 
בוקר טוב

אני שמח שאתה מצליח להתקדם למרות כל הקשיים. לגבי בעית חישוב השורות צריך עוד פירוט כמו באיזה שורה הבעיה מתרחשת מה תוצאת החישוב והאם בשורה לאחר מכן העסק מסתדר או שניתן למצוא את תבנית החישוב במקרה של שגיאה (נניח במקום פחות 1 מתקבלת תוצאה פחות 10). לגבי בעית משך החישובים, פשוט מאוד בתפריט כלים אפשריות בכרטיס חישובים תסמן חשב באופן ידני. ואז במקרה כזה האקסל יחשב רק כשתילחץ F9. ועד אז תוכל להכניס נתונים חופשי. (אל תשכך להחזיר לחישוב אוטומטי בסוף העבודה כבר קרה לי שהזנתי נתונים והגשתי דוח שהיה מבוסס על הנתונים הקודמים כי לא ביצעתי חישוב) יום טוב איציק
 

צבתות

New member
איציק, אתה גדול!!!!

הפתרון הזה עם ה-F9 כנראה מה שהציל את הישבן שלי... אני חייב לך את חיי!!! בלי זה, אתה יודע מה הייתי כנראה עושה? הייתי יוצר קובץ חיצוני, ומקשר את טבלאות אליו, ואז היה לוקח לי פ-ו-ל עבודה לעדכן את כל הקישורים לקובץ החיצוני (טוב, לא ממש ממש הרבה, אבל מעצבן מאוד!). בקשר לתופעת החישוב, זה מאוד מוזר. זה קרה פעמיים, אמנם על מחשב חלש יחסית (p2). למה אני אומר "חלש", כי הזמן שלקח לו לחשב את כל התאים לקח המון... וזה תמיד קרה בשורה 10. התחלתי משורה 7 את הטבלה. התא הראשון בטור הראשון הוא כעיקרון מספר סידורי. אז כדי להתחיל מ-1, עשיתי row(a7)-6. ואז כשמעתיקים את הנוסחה לשורה באה, אוטומטית זה נותן 2, 3 והלאה. אצלי במחשב לפחות. כשהרצתי על המחשב הנ"ל, פעמיים קרה שהוא הגיע ל-3, ובשורה אח"כ שוב 3, והמשיך ל-4, 5, וכו´. ככה נוצר רצף של 1, 2, 3, 3, 4, 5... אצלי במחשב למשל, זה לא קורה. לכן, המסקנה שלי היא, שבגלל עומס חישוב, המחשב פשוט "טעה" בחישובים. לא מצאתי איזה שהוא הסבר הגיוני אחר. אולי יש לך רעיון?
 
אתה קצת נסחף

אני מניח שלא עומדים עם אקדח מכוון לרקה שלך. אני עוד לא שמעתי על מחשב שטעה בחישוב. עד היום, בסופו של דבר, התברר שהטעות היתה אנושית. ולענין, מה הנוסחה שמופיעה בתא הסורר? תנסה לא להעתיק לשם את הנוסחה אלה רק לחשב row(A10). חוצמזה אני מניח שאתה יצר טבלה אוטומטית ואתה רוצה למספר את הרשומות. אם כך אז ברוטינה שיוצרת את הטבלה תברר מה מספר השורה החדשה שהיא מכניסה ותשתול רק את הערך הדרוש ולא נוסחה כך תחסוך חישובים. בברכה, איציק
 

צבתות

New member
../images/Emo13.gif

לא אקדח, רוגטקה... סתם. תראה, למה אני אומר שזה מוזר. כי כשאני מריץ את זה על המחשב שלי, זה אף פעם, אבל אף פעם לא קרה. גם אם הנוסחה מכילה טעות שפיספסתי, איך יכול להיות שכשמעתיקים את הנוסחה משורה 1 ל-2 זה עובד, ומ-2 ל-3, אבל פתאום ב-3 זה נשאר 3? וזה לא נוסחה ענקית של 5 שורות, זה נורא פשוט row(a7)-6. באשר לפתרון שלך, הוא באמת יעבוד, הבעיה היא שישנה אפשרות למחוק שורות גם מאמצע הטבלה, ואז ההשתלה הזו הורסת את המספור. אז נכון שאפשר לבצע מחיקה משולבת עם סידור המספרים, וזה שוב זמן חישוב... והפעם זמן חישוב שאי אפשר לחסוך עם F9.
 

צבתות

New member
זה יצור לי שורה ריקה, ומה אז?

יש לי רשימת שמות. אני רוצה למחוק את השם השלישי. אז מה יעזור לי אם ניקיתי את הנתונים בשורה? עדיין מופיע שם מספר סידורי 3, אבל אין בו תוכן. אז נכון שאפשר להכניס שם נתונים חדשים, אבל מה אם רוצים למחוק שם, בלי להכניס נתונים?
 
פשוט מאוד

אחרי שאתה בוחר את התאים תוסיף את השורה הבאה: Selection.Delete Shift:=xlUp בברכה, איציק נ.ב. אני לא כזה גאון. תקליט מאקרו שבו אתה בוחר מספר תאים בגליון, ואז, קליק ימני >מחיקה. תופיע בקשה מה לעשות עם התאים שהתפנו. אחת האופציות היא הסט תאים למעלה. תבצע, ותראה מה הוקלט.
 

צבתות

New member
יפה, אבל אז

המספרים לא יהיו עוקבים. כיוון שהכנסתי את המספרים ישר, מחיקת שורה מהאמצע תיצור אי סדירות במספרים. ואז אחרי המחיקה צריך להכניס מספור חדש החל מהשורה שנמחקה והלאה...
 
לא ברורה לי הבעיה

נניח שיש לך טבלה עם עשר שורות מעמודה A עד עמודה F בעמודה A יש רשימת מספרים סידוריים (שם לב, לא מפתח ייחודי של טבלה אלה סתם מספור שורות לצורך נוחות). נניח שאתה רוצה למחוק את הרשומה בשורה 7. תמחק תאים B7:F7 ותעלה את כל התאים מתחת לתאים שנמחקו כלפי מעלה. עכשיו, בשורה A לא נגעת והיא עדיין ממוספרת בסדר רץ מ1 עד 10 (למרות שכרגע יש רק 9 רשומות). עכשיו שתי אפשרויות, או שתמחק את התא עם המספר המיותר או שתשאיר אותו לכשתתוסף רשומה נוספת
 
למעלה