באחת התגובות בפוסט הקודם שלי בנושא רשומות כפולות ב-Excel שואלת אותי יעל  "האם ניתן למנוע רשומות כפולות גם ברשימה שהגדרתי כרשימה נפתחת ?"

התשובה היא כן, אבל הפתרון אינו טריוויאלי. יעל מבקשת להפעיל שני סוגים שונים של אימות נתונים:

1 – אימות נתונים – מותאם אישית-נוסחה, כפי שהראינו בפוסט הקודם, על מנת למנוע הכנסה של רשומה שכבר קיימת בטווח;

2 – אימות נתונים-רשימה, על מנת ליצור רשימה נפתחת של ערכים שמוצר לרשום בטווח.

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

נניח את המצב הזה

בטווח C2:C8 יצרנו טבלה (Table) ובה תאים שלה יצרנו רשימה נפתחת שניזונה מהערכים שבטווח A3:A14. על מנת להקל על העבודה שלנו, יצרנו שם name)(("List_of_Names" שמתייחס לטווח A3:A14; ושינינו את השם של הטבלה בטווח C2:C8 ל"tblWorkers".

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

ה-events הם סוג מיוחד של מקרוס שמופעלות כאשר מתרחש אירוע מסוים בגיליון. הקוד של ה-event יש לכתוב במודול של הגיליון הרלוונטי  ולא במודול כללי של העורך Vbe.

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

במודל של הגילייון כותבים את הקוד הזה

1
2
3
4
5
6
7
8
9
10
11
12
(Private Sub Worksheet_Change(ByVal Target As Range
Dim bcheckDup As Integer
If Union(Target, Range("tblWorkers")).Address = Range("tblWorkers").Address Then
Application.EnableEvents = False
(bcheckDup = WorksheetFunction.CountIf(Range("tblWorkers"), Target
If bcheckDup > 1 Then
"השם כבר מופיע בטבלה" MsgBox
Target.ClearContents
End If
Application.EnableEvents = True
End If
End Sub

ה-event מופעל כאשר מתרחש שינוי באיד התאים בגיליון (Worksheet_Change). בצעד הראשון הקוד בודק האם השינוי התרחש באחד התאים של הטבלה; אם השינוי היה באחד התאים של הטבלה הקוד בודק האם השם כבר מופיע באמצעות הפונקציה COUNTIF; עם התוצאה של COUNTIF גדולה מ-1, השם כבר קיים והקוד יוצר הודעה (MsgBox) ומוחק את הערך שהוכנס.

אפשר להסתיר את עמודת A.

הסירטון הבא מדגים את הטכניקה

בפוסט הבא נדגים פתרון באמצעות נוסחאות.

ל-Excel אין שיטה מובנית לעדכון אוטומטי של טבלאות ציר. לכן, על מנת לעדכן טבלאות ציר כשחלים שינוים בבסיס הנתונים צריך ללחוץ על הכפתור ה-Refresh (או על הקיצור Alt+F5) או על Refresh All (Ctrl+Alt+F5) אם רוצים לרענן את כל טבלאות הציר בחוברת.

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

נניח חוברת המכילה שני גיליונות: data (בסיס הנתונים של טבלת הציר) ו-report (טבלת הציר)

בלשונית של הגיליון data פותחים את התפריט ומפעילים את האופציה "view code".

בחלון של עורך ה-Vba שנפתח בוחרים ב"Worksheet" בחלון השמאלי של אזור העריכה

בחלון הימני בוחרים ב-Deactivate

הקוד, כאמור, פשוט

1
2
3
Private Sub Worksheet_Deactivate()
ActiveWorkbook.RefreshAll
End Sub

אפשר למחוק את ה- Worksheet_SelectionChange (זוהי ברירת המחדל של Excel)

ה-event גורם לכך שכל פעם שעוברים מ-data לגיליון אחר, כל טבלאות הציר של החוברת מתעדכנים.

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

בארגון בו אני עובד הוחלט לעבור ל-Office 2010 ישר מ-Office 2003 ללא תחנת ביניים בגרסה 2007 של החבילה. זוהי החלטה נהדרת (כמובן, לדעתי) בעיקר למשתמשי Excel כבדים (וכבדים פחות). ב-Excel 2010 הוכנסו הרבה שיפורים וגן כלים חדשים.

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

הנושא הראשון: מקרוס או בפרפרזה "מי הזיז את תפריט המקרוס שלי?"

כמו בגרסה 2007, ביישמוי Office 2010 הוחלפו התפריט וסרגלי הכלים ב"רצועת כלים" (ribbon). הרצועה כוללת "כרטיסים" (tabs) ובכרטיסים "קבוצות"  (groups) של פקודות. ב-Office 2010, בשונה מ-Office 2007, אפשר לבצע התאמה אישית של הרצועה, אבל נושא זה יטופל בפוסט אחר.

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

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

1 – מקליקים על הכרטיס "קובץ" ובוחרים ב"אפשרויות Excel"

2 – בוחרים ב"מרכז יחסי אמון"

המשך קריאה »

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