אקסל - פיצול חכם של טקסט לעמודות
-
יש לי עמודת נתונים באקסל עם מספר נתונים בכל תא
אני רוצה לפצל אותם לעמודות נפרדותבגלל שיש מספר שונה של נתונים בכל תא אז הפיצול המובנה באקסל לא נותן תוצאה טובה.
מצורף תמונה של עמודת המקור ולאחריו הפיצול שאקסל עשה:
ואני רוצה להגיע לתוצאה כזאת:
בעצם במקום להתחיל את הפיצול מימין לשמאל שיתחיל משמאל לימין
אשמח לרעיונות
תודה רבה! -
@מלא אמר באקסל - פיצול חכם של טקסט לעמודות:
@בערל
בקובץ הזה יש פונצקיה שמחלצת את המילה האחרונה,
אפשר לשחק איתו
ולבדוק אם המילה הזאת שווה הרב לדוגמא שיעקוף, או שיביא אותו רק במקרה כזה.הבאתי מקודם רק דוגמה, לא באמת מדובר בשמות אלא כל פעם בנתונים שונים. לא יעזור לי לחפש על מילה ספציפית...
אני ינסה לנסח טוב יותר.
בכל עמודה יש שתים או שלוש נתונים כמו בדוגמה שלי תואר, שם פרטי, משפחה.אני צריך שישים את הנתון האחרון (משפחה) בעמודה 3
את הנתון השני (שם פרטי) בעמודה 2
את הנתון הראשון (תואר - במקרה שקיים) בעמודה 1תודה רבה.
-
@בערל אם הנתונים מופרדים על ידי פסיקים, תוכל לחלץ אותם על ידי פונקציות עיבוד המחרוזות של אקסל או VBA. אני הייתי הולך על VBA כי זה פחות עבודה.
עריכה:
בעצם במקום להתחיל את הפיצול מימין לשמאל שיתחיל משמאל לימין
זה רעיון נחמד, תוכל להפוך את המחרוזות, לפצל, ולהפוך בחזרה.
הנה פונקציה ב-VBA (פתח מודל חדש ותדביק):Public Function ReversedString(s As String) As String ReversedString = StrReverse(Trim(s)) End Function
-
@בערל
הנה תוצאה- עמודה B סופרת את כמות המילים בטקסט
זה הנוסחה
=LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1
- עמודה C מחזירה את הטקסט בתוספת "," לפני הטקסט לפי מס' המילים
זה הנוסחה
=IF(B2=2,","&A2,IF(B2=1,", ,"&A2,A2))
ונשאר רק להפריד
בהצלחהעריכה : כמובן שאתה יכול לחבר את שני העמודות לכדי נוסחה אחת
כזו=IF(LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1=2,","&A2,IF(LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1=1,", ,"&A2,A2))
- עמודה B סופרת את כמות המילים בטקסט
-
@מלא אמר באקסל - פיצול חכם של טקסט לעמודות:
האם התוארים קבועים? הרב, רבי, הגאון
כי אם כן, תוכל להשתמש עם הפונקציות שבקובץ הנ"להתארים אינם קבועים, אפי' לא חוזרים על עצמם.
@אוריי אמר באקסל - פיצול חכם של טקסט לעמודות:@בערל
הנה תוצאה- עמודה B סופרת את כמות המילים בטקסט
זה הנוסחה
=LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1
- עמודה C מחזירה את הטקסט בתוספת "," לפני הטקסט לפי מס' המילים
זה הנוסחה
=IF(B2=2,","&A2,IF(B2=1,", ,"&A2,A2))
ונשאר רק להפריד
בהצלחהעריכה : כמובן שאתה יכול לחבר את שני העמודות לכדי נוסחה אחת
כזו=IF(LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1=2,","&A2,IF(LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1=1,", ,"&A2,A2))
תודה רבה
אבל זה לא עובד אצלי. באשמתי, הדוגמה כנראה לא הייתה ברורה מספיק.
לא מדובר במילא אחת כל פעם אלא במספר שונה של תווים מספרים ואותיות.
המעלה היחידה לטובתי היא שיש פסיק המפריד ביניהם. - עמודה B סופרת את כמות המילים בטקסט
-
@odeddvir אמר באקסל - פיצול חכם של טקסט לעמודות:
זה רעיון נחמד, תוכל להפוך את המחרוזות, לפצל, ולהפוך בחזרה.
הנה פונקציה ב-VBA (פתח מודל חדש ותדביק):Public Function ReversedString(s As String) As String ReversedString = StrReverse(Trim(s)) End Function
גאוני.
עובד מעולה!תודה רבה רבה לכולם
וסליחה על חוסר הבהירות בדוגמה. -
@בערל , בזכותך עלה לי רעיון יותר פשוט!
תכתוב בעמודה B את הנוסחה הזו
=REPT(" ,",10-SUM(LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ","")))) &A2
ואותו תפריד
תוכל תמיד לשחק עם כמות המילים בתוך הנוסחהפשוט לשנות במס' 10 שיש בהתחלה לסך המילים המרבית שיש לך בטקסט