העתק את סכום התאים שנבחרו ללוח

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

כבר מהגירסאות הראשונות, שורת המצב בתחתית חלון Microsoft Excel הציג באופן מסורתי סכומים עבור תאים נבחרים:

העתק את סכום התאים שנבחרו ללוח

אם תרצה, ניתן היה אפילו ללחוץ לחיצה ימנית על התוצאות הללו ולבחור מתפריט ההקשר בדיוק אילו פונקציות אנו רוצים לראות:

העתק את סכום התאים שנבחרו ללוח

ורק לאחרונה, בעדכוני האקסל האחרונים, מפתחי מיקרוסופט הוסיפו תכונה פשוטה אך גאונית - כעת כאשר אתה לוחץ על התוצאות הללו, הן מועתקות ללוח!

העתק את סכום התאים שנבחרו ללוח

יופי. 

אבל מה עם מי שעדיין לא (או כבר?) יש לו גרסה כזו של אקסל? זה המקום שבו פקודות מאקרו פשוטות יכולות לעזור.

העתקת סכום התאים שנבחרו ללוח באמצעות מאקרו

פתח בכרטיסייה מפתחים (מפתח) עורך Visual Basic או השתמש בקיצור מקלדת זה אחר+F11. הוסף מודול ריק חדש דרך התפריט הכנס - מודול והעתק לשם את הקוד הבא:

Sub SumSelected() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) .PutInClipboard End With EndClipboard  

ההיגיון שלו פשוט:

  • ראשית מגיעה "ההגנה מפני השוטה" - אנחנו בודקים מה בדיוק מודגש. אם לא נבחרו תאים (אלא, למשל, תרשים), צא מהמאקרו.
  • לאחר מכן באמצעות הפקודה Getobject אנו יוצרים אובייקט נתונים חדש שבו סכום התאים הנבחרים שלנו יאוחסן מאוחר יותר. קוד אלפאנומרי ארוך ובלתי מובן הוא למעשה קישור לסניף הרישום של Windows שבו נמצאת הספרייה ספריית אובייקטים של Microsoft Forms 2.0, שיכול ליצור אובייקטים כאלה. לפעמים הטריק הזה נקרא גם כריכה מאוחרת מרומזת. אם אינך משתמש בו, תצטרך ליצור קישור לספרייה זו בקובץ דרך התפריט כלים - הפניות.
  • סכום התאים שנבחרו נחשב לפקודה WorksheetFunction.Sum(בחירה), ולאחר מכן הכמות המתקבלת מונחת על הלוח עם הפקודה PutInClipboard

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

ואם אתה רוצה לראות מה בדיוק הועתק לאחר הפעלת המאקרו, אתה יכול להפעיל את החלונית Clipboard באמצעות החץ הקטן בפינה הימנית התחתונה של הקבוצה המתאימה העיקרי (בית) כרטיסייה:

העתק את סכום התאים שנבחרו ללוח

לא רק הסכום

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

העתק את סכום התאים שנבחרו ללוח

לדוגמה, יש:

  • סכום – סכום
  • ממוצע - ממוצע אריתמטי
  • ספירה - מספר תאים עם מספרים
  • CountA - מספר תאים מלאים
  • CountBlank - מספר תאים ריקים
  • מינימום - ערך מינימלי
  • מקסימום - ערך מקסימלי
  • חציון - חציון (ערך מרכזי)
  • … וכו.

כולל מסננים ועמודות שורות נסתרות

מה אם שורות או עמודות מוסתרות (ידנית או על ידי מסנן) בטווח שנבחר? כדי לא לקחת אותם בחשבון בסיכומים, נצטרך לשנות מעט את הקוד שלנו על ידי הוספה לאובייקט בחירה רכוש SpecialCells(xlCellTypeVisible):

Sub SumVisible() If TypeName(Selection) <> "Range" ואז צא מ-Sub עם GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialTyps.xlCellTyp) PutInClipboard End With End Sub  

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

אם אתה צריך נוסחה חיה

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

Sub SumFormula() If TypeName(Selection) <> "Range" ואז צא משנה עם GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Selection. כתובת, ",", ";"), "$", "") & ")" .PutInClipboard End With End Sub  

סיכום עם תנאים נוספים

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

 Sub CustomCalc() עמעם את myRange As Range If TypeName(Selection) <> "Range" ואז צא משנה עבור כל תא בבחירה אם cell.Value > 5 ו- cell.Interior.ColorIndex <> xlNone Then If myRange Is Nothing Then Set myRange = cell Else Set myRange = Union(myRange, cell) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClipboard  

כפי שאתה יכול בקלות לדמיין, ניתן להגדיר תנאים לחלוטין בכל - עד פורמטים של תאים - ובכל כמות (כולל על ידי קישורם יחד עם אופרטורים לוגיים או או ו). יש הרבה מקום לדמיון.

  • המר נוסחאות לערכים (6 דרכים)
  • מהן פקודות מאקרו, כיצד להשתמש בהן, היכן להכניס קוד של Visual Basic
  • מידע שימושי בשורת המצב של Microsoft Excel

השאירו תגובה