-
שבוע טוב.
יש ברשותי שני קטלוגים בקובץ אקסל, אחד מעודכן מאדם אחד, והשני עודכן מאדם שני.
אני צריך לאחד בצורה כזו שקטלוג ב' ידרוס את קטלוג א' רק בערכים שמופיעים בשניהם.
כלומר שכל הערכים שנמצאים בקטלוג ב' שאינם כלל בקטלוג א' יועתקו לקטלוג א'.
כמו"כ כל הערכים בקטלוג א' שאינם כלל בקטלוג ב' ישארו בקטלוג א'.
ורק הערכים שמופיעים בשניהם, אז קטלוג ב' ידרוס את קטלוג א'.אני יתן דוגמא: בקטלוג א' יש 3 עמודות,
שם הספר, נושא, ומספר מדף.
ומצויים שם כמה ספרים, משנה ברורה, ארחות שבת, שמירת שבת כהלכתה, ואילת השחר, מסילת ישרים.בקטלוג ב' יש גם 3 עמודות,
שם הספר, נושא, ומספר מדף.
ומצויים שם כמה ספרים, אילת השחר קידושין, אילת השחר בבא קמא, אילת השחר בבא מציעא, אילת השחר זבחים, מסילת ישרים, ארחות צדיקים.מה שקרה: שבקטלוג ב' עדכנו את הספרים לפי מספרי המדפים החדשים שלהם, וגם חילקו את הסטים לפי מסכתות, כך שסט שהיה עד היום במדף אחד (והיה רשום ברשומה אחת) מהיום הוא נמצא בכמה מדפים (ומופיע בכמה רשומות).
מאידך, הגבאי המשיך לעדכן בקטלוג א' את הספרים החדשים שהוא הכניס.לכן אני צריך כדלהלן:
א. שכל הספרים שמופיעים בקטלוג א' שאינם בקטלוג ב' שישארו כמות שהם בקטלוג א'.
ב. שכל הספרים שמופיעים בקטלוג ב' בשינוי מספר המדף ומופיעים גם בקטלוג א' - שיחליפו את המופיע בקטלוג א'.
ג. שכל הספרים שמופיעים בקטלוג ב' מפוצלים ובקטלוג א' הם נמצאים ברשומה אחת - יופיעו בקטלוג ככמה רשומות וימחקו את הרשומה הבודדת שמופיע בקטלוג א'.מקווה שהובנתי, זה בהחלט מורכב.
מצרף ג"כ קובץ אקסל עם הדוגמא - לנסיונות.
תודה למוצא הפיתרון!
קובץ לדוגמא.xlsx -
@משתמש-מקצוען הצלחתי באמצעות power query. אני לא יודע אם זו הדרך הכי קלה.
הוראות:
(אם איזה שלב לא ברור, תבקש עוד פירוט)- תכניס את הדאטה שנמצא בקטלוג א וקטלוג ב בטבלה או טווח (range) עם שם. בקובץ שהעליתי קראתי לטווח של קטלוג א בשם
table1
והטווח של טבלה ב בשםtable2
(השם רלוונטי בקוד בהמשך) - בלשונית דאטה בחר שאילתת power query ריקה
- תפתח את העורך המתקדם ותכניס את השאילתה הבאה:
let Source = Excel.CurrentWorkbook(), table1 = Source{[Name="table1"]}[Content], table2 = Source{[Name="table2"]}[Content], #"table1 normalized" = Table.TransformColumns(table1, {{"Column1", Text.Trim}}), #"table2 normalized" = Table.TransformColumns(table2, {{"Column1", Text.Trim}}), filtered = Table.SelectRows(#"table1 normalized", each not Table.Contains(#"table2 normalized", [Column1 = [Column1]], "Column1")) in Table.Combine({ #"table2 normalized", filtered })
- שמור
- תכניס את הדאטה שנמצא בקטלוג א וקטלוג ב בטבלה או טווח (range) עם שם. בקובץ שהעליתי קראתי לטווח של קטלוג א בשם
-
@yossiz כתב בעזרה דחופה באקסל - איחוד שני קטלוגים יחד.:
תכניס את הדאטה שנמצא בקטלוג א וקטלוג ב בטבלה או טווח (range) עם שם. בקובץ שהעליתי קראתי לטווח של קטלוג א בשם table1 והטווח של טבלה ב בשם table2 (השם רלוונטי בקוד בהמשך)
את השלב השני הבנתי. אך את השלב הזה ממש לא.
אשמח לפירוט מדוייק, כבר המון זמן לא השתמשתי באקסל ועכשיו התוצאות...(אגב, אני רואה שצדקתי כשהכנסתי את זה לקטגוריה של תיכנות, שיערתי שזה מצריך כתיבת קוד...).
תודה ענקית!
עריכה: הסתדרתי, היה לי שגיאה בתהליך, כעת עשיתי שוב, ובאמת הכל עובד הפלא ופלא!
-
@משתמש-מקצוען לענ"ד זה עדיין לא נכנס לקטגוריית תכנות, אבל בוא לא נתווכח על זה...
באקסל אפשר לתת שם לתא או לטווח של תאים. בוחרים את הטווח (או התא היחידי), ואז בפינה למעלה מכניסים שם
אם מגדירים טווח כטבלה, זה אוטומטי מקבל שםתמונה:
בעוד שאני כותב אני רואה שכבר הסתדרת, אז הפוסט הזה יהיה לטובת מי שלא מכיר (כולל את עצמי... אני לא מכיר את אקסל טוב בכלל, למדתי קצת הערב בזכותך )
-
אם חלק מהשורות מודגשות בצהוב (כלומר כל העמודות של ספרים מסויימים), כיצד אוכל לשמור אותם בצהוב?
-
@משתמש-מקצוען כהמלצה כללית, לא כדאי לשמור דאטה בעיצוב של התא, כי קשה לעבוד עם זה.
נראה לי שבמקרה הזה אם תרצה לשמור על הצבע תצטרך לעבוד בצורה יותר "אקסלית מסורתית"...
כלומר,- להוסיף עמודה לקטלוג א של פונקציה שאומרת אם שם הספר נמצא בקטלוג ב
משהו כזה:
=NOT(ISERROR(VLOOKUP(A1,'קטלוג ב'!A1:A6,1, FALSE)))
- בקובץ הדוגמה שהבאת יש צורך להוסיף גם פונקצית
TRIM
כי לפעמים השם זהה חוץ מרווח נוסף בסוף - ואז לסנן את הקטלוג לפי הערך של סינון זה ולהציג רק שורות ששם הספר לא נמצא בקטלוג ב
- ואז להעתיק את התוצאה של הסינון ולהדביק אותה לסוף קטלוג ב
הערה: למרות שאני מציג פתרון זה בעדיפות שניה, זה רק כי זה פחות קורץ לי כאחד שמכיר שפות תכנות ולא מכיר שימוש יומיומי באקסל... נראה לי שלרוב אנשים זה הפתרון היותר שימושי ופרקטי
- להוסיף עמודה לקטלוג א של פונקציה שאומרת אם שם הספר נמצא בקטלוג ב