נוסחא בתא אחד שמחשבת תאים שלא כלולים בנוסחא שבתא אחר.

סטל10

New member
נוסחא בתא אחד שמחשבת תאים שלא כלולים בנוסחא שבתא אחר.

בוקר טוב!
ברשותי ווינדוס 7 ואופיס 2010.
שלחתי שאלה שבוע שעבר כנראה שהיא לא היתה ברורה מספיק כי לא קיבלתי כל תגבה.
אני שואל שוב כעת בנוסח הרבה יותר קצר ומובן.
אני מעוניין לכתוב בתא מסויים נוסחת "sum" שתחשב תאים מסויימים שלא נכללו בנוסחת ה"sum" שעשיתי בתא אחר.
מצורף קובץ.
זה מאד חשוב לי, אני מודה מראש לכל מי שיוכל לעזור לי!
 

מיכאל אבידן

Member
מנהל
אפשר, אולי, כבתמונה שלהלן . . .




 

סטל10

New member
לא חשבתי על זה..

הרעיון מעולה ומועיל ממש תודה!
אבל אני ישמח אם יש נוסחא מהסוג שבקשתי שתתן לי את אותה תוצאה מכמה סיבות:
1.אם תהיה לי נוסחא אוכל גם לצבוע את כל התאים שלא חושבו בנוסחא בתא B7.
2.התאים שבהם הסכומים הם רבים מאד (לא כמו בקובץ שצירפתי) ולעיתים גם לא מסודרים וזה טירחה גדולה לסמן את הכל ולהפחית את התוצאה שהתקבלה בתא B7.
3.לפעמים יש לי הוספות מאוחרות יותר וחשוב לי לדעת אם זה שייך לתאים שחושבו בנוסחא הראשונה או בשניה.
תודה רבה מאד!
 

סטל10

New member
כיצד אפשר לפתור את זה?

צירפתי קובץ.
כאן הבעיה יותר קשה.
יש לי רשימת תאים עם מספרים.
את חלקם אני מסכם בנוסחת ה"sum".
חלק נוסף מהתאים אני מכפיל בנוסחת "product".
(יצויין כי הבחירה בתאים היא לפי דעתי ומשתנה מפעם לפעם כך שאי אפשר להגדירם בנוסחה.)
וכעת אני מעוניין לסכם את כל התאים שלא כלולים בשתי הנוסחאות הקודמות.
תודה רבה מאד!
 

iyyi

New member
הפתרון המתבקש הוא UDF אבל...

משום מה
"המזינים" (Precedents) שזמינים במקרו רגיל לא זמינים ב-UDF
לכן כתבתי מקרו קטן המופעל ע"י כפתור "חשב" שמסכם את התאים שמשתתפים בנוסחאות (E14:E15).
סכום התאים שלא משתתפים בנוסחאות מחושב על בסיס זה.

היה מתבקש לכתוב מקרו זה כמקרו אירוע המופעל ע"י שינוי ערך בתחום התאים המסוכמים, אבל מסיבה לא ידועה לי (ביטוי אחר לבאג באקסל 2013) אקסל קורס בכל פעם שהאירוע מופעל.
לאור זאת השארתי את המקרו הרגיל - שלהלן הקוד שלו:
קוד:
Sub SumFormulaCells()
For Each c In [e14:e15]
    s = s + WorksheetFunction.Sum(c.Precedents)
Next
[G15] = s
End Sub
מצורף גם קובץ
 

iyyi

New member
טוב, לא מדובר בבאג אלא בטעות שלי...

מצורף קובץ עם מקרו אירוע שכל שינוי בתחום התאים B2:G11 גורם לחישוב מחדש המבוקש. להלן קוד המקרו:
קוד:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [b2:g11]) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In [e14:e15]
    s = s + WorksheetFunction.Sum(c.Precedents)
Next
[G15] = s
Application.EnableEvents = True
End Sub
מצורף קובץ
 
למעלה