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

1 – פתרון עם "טקסט לעמודות"

אם לקוד האלפאנומרי תבנית קבועה

num_in_str_heb01

נוכל להשתמש ב"טקסט לעמודות":

א.      בוחרים את הטווח

ב.      ב"טקסט לעמודות" בוחרים באופציה "רוחב קבוע"

ג.       מקליקים במקום הרצוי על מנת ליצור את ההפרדה

ד.      בשלב האחרון בוחרים האם להציג את שני השדות או לבטל אחד מהם (המספרים  או האותיות)

2 – פתרון עם נוסחת מערך

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

=MID(A2,MATCH(TRUE,ISNUMBER(1*MID(A2,ROW($1:$8),1)),0),COUNT(1*MID(A2,ROW($1:$8),1)))

num_in_str_heb02

זאת נוסחת מערך שמכניסים לתא ע"י לחיצה על המקשים Ctrl+Shift+Enter

כדי לחלץ את האותיות במקום המספרים, יש להחליף את הארגומנט TRUE בפונקציה MATCH בערך FALSE

num_in_str_heb03

לנוסחה זו מספר חסרונות:

  • היא מסורבלת ויש להתאים אותה לגודל הקוד האלפאנומרי;
  • במקרה של מספר קבוצות מספרים או אותיות התוצאה יכול להיות לא נכונה

num_in_str_heb04

3 – פתרון עם UDF (פונקציה מוגדרת ע"י המשתמש – מקרו)

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Function ext_num_let(rngCell As Range, tType As Boolean)
Dim iX As Integer, strResult As String, temp As String

Select Case tType
Case 1
For iX = 1 To Len(rngCell)
temp = Mid(rngCell, iX, 1)
If IsNumeric(temp) Then
strResult = strResult & temp
End If
Next iX
Case Else
For iX = 1 To Len(rngCell)
temp = Mid(rngCell, iX, 1)
If Not IsNumeric(temp) Then
strResult = strResult & temp
End If
Next iX
End Select

ext_num_let = strResult

End Function

לפונקציה שני ארגומנטים
num_in_str_heb05

RngCell: התא המכיל את הקוד האלפאנומרי

TType: על מנת לחלץ את המספרים מקלידים 1; 0 על מנת להוציא את האותיות

להלן מספר דוגמאות

num_in_str_heb06

ניתן להוריד את החוברת עם הדוגמאות והקוד של ה-UDF כאן

הפונקציות SUMIF ו-COUNTIF מוגבלות לתנאי אחד. התחביר של שתי הפונקציות דומה

=SUMIF(range,criteria,[sum_range])

=COUNTIF(range,criteria)

הארגומנט [sum_range] ב-SUMIF אופציונאלי.

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

multCrit01

כדי  לחשב כמה סניפים יש בכל אזור (תא G4) נשתמש בנוסחה

=COUNTIF(C3:C22,G3)

וכדי לחשב את סה"כ מכירות של האזור נשתמש ב:

=SUMIF(C3:C22,G3,D3:D22)

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

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

קריטריונים מרובים, טווח אחיד

כמה סניפים מכרו בין 150,000 ₪ לבין 200,000 ₪ ?

פתרון עם SUMPRODUCT

=SUMPRODUCT((D3:D22>=150000)*(D3:D22<=200000))

SUMPRODUCT יוצרת שני מערכים של ערכים FALSE ו-TRUE, מכפילה בניהם ומסכמת את תוצאות ההכפלה. הטבלה להלן מדגימה את הפעולה של SUMPRODUCT

multCrit02

פתרון עם COUNTIFS (רק Excel 2007/10)

=COUNTIFS(D3:D22,">=150000",D3:D22,"<=200000")

בכמה מכרו את הסניפים הללו?

פתרון עם SUMPRODUCT

=SUMPRODUCT((D3:D22>=150000)*(D3:D22<=200000)*D3:D22)

הנוסחה זהה לנוסחת הספירה עם תוספת טווח המכירות.

פתרון עם SUMIFS (רק Excel 2007/10)

=SUMIFS(D3:D22,D3:D22,">=150000",D3:D22,"<=200000")

קריטריונים מרובים, טווחים מרובים

כמה סניפים באזור הצפון מכרו מעל 150,000 ₪?

פתרון עם SUMPRODUCT

=SUMPRODUCT((C3:C22="צפון")*(D3:D22>150000))

multCrit03

פתרון עם COUNTIFS

=COUNTIFS(C3:C22,"צפון",D3:D22,">150000")

בכמה מכרו הסניפים הללו?

פתרון עם SUMPRODUCT

=SUMPRODUCT((C3:C22="צפון")*(D3:D22>150000)*D3:D22)

פתרון עם SUMIFS (רק Excel 2007/10)

=SUMIFS(D3:D22,C3:C22,"צפון",D3:D22,">150000")

אפשר להוריד את הקובץ עם הדוגמאות כאן

משימה שכיחה ב-Excel היא למצוא את הערך האחרון של שורה או עמודה. נניח לדוגמה רשימה כגון זו

lookup01

השמימה היא למצוא את הערך אחרון בכל שורה

lookup02

על מנת למצוא אף הערך האחרון בכל שורה נשתמש בפונקציה LOOKUP

lookup03

לפונקציה LOOKUP יש שתי צורות שונות ב-Excel: תבנית + וקטור ותבנית מערך. בדוגמה שלנו השתמשנו בצורה האחרונה. על פי העזרה המכוונת  של Excel הצורה "תבנית מערך" של הפונקציה

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

וזה בדיוק מה שאנו מחפשים.

הערך

9.99999999999999E+307

בפרמטר הראשון של הפונקציה הוא המספר הגדול ביותר שאפשר להכניס שתא של Excel.

כמובן, אותו הדבר נכון לחיפוש אחרי הערך האחרון בעמודה

lookup04

© 2012 LookUp - פתרונות Excel והדרכה מתקדמת Suffusion WordPress theme by Sayontan Sinha