בונדינג טעקסט דורך צושטאַנד

איך שוין געשריבן וועגן ווי איר קענען געשווינד קליי טעקסט פון עטלעכע סעלז אין איין און, פאַרקערט, פּאַרס אַ לאַנג טעקסט שטריקל אין קאַמפּאָונאַנץ. איצט לאָזן ס קוק אין אַ נאָענט, אָבער אַ ביסל מער קאָמפּליצירט אַרבעט - ווי צו קליי טעקסט פון עטלעכע סעלז ווען אַ זיכער ספּעציפיש צושטאַנד איז באגעגנט. 

זאל ס זאָגן אַז מיר האָבן אַ דאַטאַבייס פון קאַסטאַמערז, ווו איין פירמע נאָמען קענען שטימען צו עטלעכע פאַרשידענע ימיילז פון זייַן עמפּלוייז. אונדזער אַרבעט איז צו זאַמלען אַלע די אַדרעסעס דורך פירמע נעמען און קאַנקאַטאַנייט זיי (געשיידט דורך קאָמע אָדער סעמיקאָלאָנס) אין סדר צו מאַכן, למשל, אַ מיילינג רשימה פֿאַר קאַסטאַמערז, ד"ה באַקומען רעזולטאַט עפּעס ווי:

בונדינג טעקסט דורך צושטאַנד

אין אנדערע ווערטער, מיר דאַרפֿן אַ געצייַג וואָס וועט קליי (לינק) דעם טעקסט לויט די צושטאַנד - אַן אַנאַלאָג פון די פֿונקציע SUMMESLI (SUMIF), אָבער פֿאַר טעקסט.

אופֿן 0. פאָרמולע

נישט זייער עלעגאַנט, אָבער די יזיאַסט וועג. איר קענען שרייַבן אַ פּשוט פאָרמולע וואָס וועט קאָנטראָלירן צי די פירמע אין דער ווייַטער רודערן איז אַנדערש פון די פריערדיקע. אויב עס איז נישט אַנדערש, קליי די ווייַטער אַדרעס אפגעשיידט דורך אַ קאָמע. אויב עס איז אַנדערש, מיר "באַשטעטיק" די אַקיומיאַלייטיד, סטאַרטינג ווידער:

בונדינג טעקסט דורך צושטאַנד

די דיסאַדוואַנטידזשיז פון דעם צוגאַנג זענען קלאָר ווי דער טאָג: פון אַלע די סעלז פון די נאָך זייַל באקומען, מיר דאַרפֿן בלויז די לעצטע פֿאַר יעדער פירמע (געל). אויב די רשימה איז גרויס, אין סדר צו געשווינד אויסקלייַבן זיי, איר וועט האָבן צו לייגן אן אנדער זייַל מיט די פונקציע DLSTR (לען), קאָנטראָלירן די לענג פון די אַקיומיאַלייטיד סטרינגס:

בונדינג טעקסט דורך צושטאַנד

איצט איר קענען פילטער אויס די אָנעס און נאָכמאַכן די נייטיק אַדרעס גלוינג פֿאַר ווייַטער נוצן.

אופֿן 1. מאַקראָפונקטיאָן פון גלוינג דורך איין צושטאַנד

אויב דער אָריגינעל רשימה איז נישט אויסגעשטעלט דורך פירמע, די פּשוט פאָרמולע אויבן אַרבעט נישט, אָבער איר קענען לייכט באַקומען אַרום מיט אַ קליין מנהג פונקציע אין VBA. עפֿענען די וויסואַל באַסיק עדיטאָר דורך דרינגלעך אַ קלאַוויאַטור דורכוועג אַלט + פקסנומקס אָדער ניצן די קנעפּל וויסואַל באַסיק קוויטל דעוועלאָפּער (דעוועלאָפּער). אין די פֿענצטער וואָס אָפּענס, אַרייַנלייגן אַ נייַ ליידיק מאָדולע דורך די מעניו אַרייַנלייגן - מאָדולע און נאָכמאַכן דעם טעקסט פון אונדזער פֿונקציע דאָרט:

פֿונקציע MergeIf(TextRange As Range, SearchRange As Range, Condition As String) Dim Delimeter As String, i As Long Delimeter = ", " גלוינגז זענען נישט גלייַך צו יעדער אנדערער - מיר אַרויסגאַנג מיט אַ טעות אויב SearchRange.Count <> TextRange.Count דערנאָך MergeIf = CVErr(xlErrRef) אַרויסגאַנג פונקציע סוף אויב 'גיין דורך אַלע די סעלז, קאָנטראָלירן די צושטאַנד און קלייַבן די טעקסט אין די בייַטעוודיק אָוטטעקסט פֿאַר איך = 1 צו זוכן ראַנגע. Cells.Count אויב SearchRange.Cells (איך) ווי צושטאַנד דעמאָלט אָוטטעקסט = אָוטטעקסט & טעקסטראַנגע.סעללס (איך) & דעלימעטער ווייַטער איך 'ווייַזן רעזולטאַטן אָן לעצטע דעלימיטער MergeIf = Left(OutText, Len(OutText) - Len(Delimeter)) סוף פֿונקציע  

אויב איר איצט צוריקקומען צו Microsoft Excel, דעמאָלט אין דער רשימה פון פאַנגקשאַנז (קנעפּל fx אין די פאָרמולע באַר אָדער קוויטל פאָרמולאַס - אַרייַנלייגן פֿונקציע) עס וועט זיין מעגלעך צו געפֿינען אונדזער פֿונקציע MergeIf אין קאַטעגאָריע באַניצער דיפיינד (באַניצער דעפינירט). די אַרגומענטן צו די פֿונקציע זענען ווי גייט:

בונדינג טעקסט דורך צושטאַנד

מעטאָד 2. קאַנקאַטאַנייט טעקסט דורך ינעקסאַקט צושטאַנד

אויב מיר פאַרבייַטן דער ערשטער כאַראַקטער אין די 13 שורה פון אונדזער מאַקראָו = צו דער דערנענטערנ גלייַכן אָפּעראַטאָר ווי, דעמאָלט עס וועט זיין מעגלעך צו דורכפירן גלוינג דורך אַ ינעקסאַקט גלייַכן פון די ערשט דאַטן מיט די סעלעקציע קריטעריע. פֿאַר בייַשפּיל, אויב די פירמע נאָמען קענען זיין געשריבן אין פאַרשידענע וועריאַנץ, מיר קענען קאָנטראָלירן און קלייַבן זיי אַלע מיט איין פֿונקציע:

בונדינג טעקסט דורך צושטאַנד

נאָרמאַל ווילדקאַרדס זענען געשטיצט:

  • אַסטעריסק (*) - דינאָוץ קיין נומער פון אותיות (אַרייַנגערעכנט זייער אַוועק)
  • קשיא צייכן (?) - שטייט פֿאַר קיין איין כאַראַקטער
  • פונט צייכן (#) - שטייט פֿאַר קיין איין ציפֿער (0-9)

דורך פעליקייַט, די לייק אָפּעראַטאָר איז פאַל-שפּירעוודיק, דאָס הייסט, פֿאַרשטייט, למשל, "אָריאָן" און "אָריאָן" ווי פאַרשידענע קאָמפּאַניעס. צו איגנאָרירן דעם פאַל, איר קענען לייגן די שורה אין די אָנהייב פון די מאָדולע אין די וויסואַל באַסיק רעדאַקטאָר אָפּציע פאַרגלייַכן טעקסט, וואָס וועט באַשטימען ווי צו זיין פאַל ינסענסיטיוו.

אין דעם וועג, איר קענען קאַמפּאָוז זייער קאָמפּלעקס מאַסקס פֿאַר קאָנטראָלירונג טנאָים, למשל:

  • ?1##??777RUS - סעלעקציע פון ​​אַלע דערלויבעניש פּלאַטעס פון די 777 געגנט, סטאַרטינג מיט 1
  • LLC * - אַלע קאָמפּאַניעס וועמענס נאָמען הייבט מיט LLC
  • ##7## - אַלע פּראָדוקטן מיט אַ פינף-ציפֿער דיגיטאַל קאָד, ווו די דריט ציפֿער איז 7
  • ????? – אַלע נעמען פון פינף אותיות, אאז"ו ו.

מעטאָד 3. מאַקראָו פֿונקציע פֿאַר גלוינג טעקסט אונטער צוויי באדינגונגען

אין דער אַרבעט עס קען זיין אַ פּראָבלעם ווען איר דאַרפֿן צו פאַרבינדן דעם טעקסט מער ווי איין צושטאַנד. למשל, לאָמיר זיך פֿאָרשטעלן, אַז אין אונדזער פריערדיקן טיש איז צוגעלייגט געוואָרן נאָך איין זייַל מיט דער שטאָט, און מען זאָל דורכנעמען דעם קליינונג ניט נאָר פאַר אַ געוויסער פירמע, נאָר אויך פאַר אַ געוויסער שטאָט. אין דעם פאַל, אונדזער פונקציע וועט זיין אַ ביסל מאַדערנייזד דורך אַדינג אן אנדער קייט טשעק צו עס:

פֿונקציע MergeIfs (טעקסטראַנגע ווי ראַנגע, זוךראַנגע1 ווי ראַנגע, קאָנדיטיאָן1 ווי שטריקל, זוךראַנגע2 ווי ראַנגע, קאָנדיטיאָן2 ווי שטריקל) דיק דעלימעטער ווי שטריקל, איך ווי לאנג דעלימעטער = ", " 'דעלימיטער אותיות (קענען זיין ריפּלייסט מיט פּלאַץ אָדער ; עטק.) ע.) 'אויב די וואַלאַדיישאַן און גלוינג ריינדזשאַז זענען נישט גלייַך צו יעדער אנדערער, ​​אַרויסגאַנג מיט אַ טעות אויב SearchRange1.Count <> TextRange.Count אָדער SearchRange2.Count <> TextRange.Count דעמאָלט MergeIfs = CVErr(xlErrRef) עקסיט פֿונקציע סוף אויב 'גיין דורך אַלע סעלז, קאָנטראָלירן אַלע באדינגונגען און קלייַבן די טעקסט אין די בייַטעוודיק אָוטטעקסט פֿאַר i = 1 צו SearchRange1.Cells.Count. TextRange.Cells(i) & דעלימעטער סוף אויב ווייַטער איך 'ווייַזן רעזולטאַטן אָן לעצטע דעלימיטער MergeIfs = Left(OutText, Len(OutText) - Len(Delimeter)) סוף פֿונקציע  

עס וועט זיין געווענדט אין פּונקט דער זעלביקער וועג - בלויז אַרגומענטן איצט דאַרפֿן צו זיין ספּעסיפיעד מער:

בונדינג טעקסט דורך צושטאַנד

אופֿן 4. גרופּינג און גלוינג אין מאַכט אָנפֿרעג

איר קענען סאָלווע די פּראָבלעם אָן פּראָגראַממינג אין VBA, אויב איר נוצן די פריי Power Query אַדישאַן. פֿאַר עקססעל 2010-2013 עס קענען זיין דאַונלאָודיד דאָ, און אין עקססעל 2016 עס איז שוין געבויט אין דורך פעליקייַט. די סיקוואַנס פון אַקשאַנז וועט זיין ווי גייט:

Power Query קען נישט אַרבעטן מיט רעגולער טישן, אַזוי דער ערשטער שריט איז צו מאַכן אונדזער טיש אַ "קלוג". צו טאָן דאָס, סעלעקטירן עס און דריקן די קאָמבינאַציע קטרל+T אָדער אויסקלייַבן פון די קוויטל היים - פֿאָרמאַט ווי אַ טיש (היים - פֿאָרמאַט ווי טיש). אויף די קוויטל אַז דעמאָלט אויס קאָנסטרוקטאָר (פּלאַן) איר קענען שטעלן די טיש נאָמען (איך לינקס דער נאָרמאַל טיש קסנומקס):

בונדינג טעקסט דורך צושטאַנד

איצט לאָזן אונדז לאָדן אונדזער טיש אין די Power Query אַדישאַן. צו טאָן דאָס, גיין צו די קוויטל דאַטע (אויב איר האָבן עקססעל 2016) אָדער אויף די מאַכט אָנפֿרעג קוויטל (אויב איר האָבן עקססעל 2010-2013) גיט פון טיש (דאַטן - פֿון טיש):

בונדינג טעקסט דורך צושטאַנד

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

בונדינג טעקסט דורך צושטאַנד

דריקט OK און מיר באַקומען אַ מיני טיש פון גרופּט וואַלועס פֿאַר יעדער פירמע. די אינהאַלט פון די טישן איז קלאר קענטיק אויב איר לינקס-גיט אויף די ווייַס הינטערגרונט פון די סעלז (ניט אויף די טעקסט!) אין די ריזאַלטינג זייַל:

בונדינג טעקסט דורך צושטאַנד

איצט לאָזן אונדז לייגן נאָך איין זייַל, ווו, ניצן די פונקציע, מיר קליי די אינהאַלט פון די אַדרעס שפאלטן אין יעדער פון די מיני טישן, אפגעשיידט דורך קאָמע. צו טאָן דאָס, גיין צו די קוויטל לייג זייַל מיר דריקן מנהג זייַל (לייג זייַל — מנהג זייַל) און אין די פֿענצטער וואָס איז ארויס, אַרייַן די נאָמען פון די נייַע זייַל און די קאַפּלינג פאָרמולע אין די M שפּראַך געבויט אין Power Query:

בונדינג טעקסט דורך צושטאַנד

באַמערקונג אַז אַלע M-פאַנגקשאַנז זענען פאַל-שפּירעוודיק (ניט ענלעך עקססעל). נאָך קליקינג אויף OK מיר באַקומען אַ נייַע זייַל מיט קליימד אַדרעסעס:

בונדינג טעקסט דורך צושטאַנד

עס בלייבט צו באַזייַטיקן די שוין ומנייטיק זייַל טאַבלע אַדרעסעס (רעכט קליקט אויף דעם טיטל) ויסמעקן זייַל) און צופֿעליקער די רעזולטאַטן צו די בלאַט דורך געבן אַ קליק אויף די קוויטל היים - נאָענט און אראפקאפיע (היים - נאָענט און לאָדן):

בונדינג טעקסט דורך צושטאַנד

וויכטיק נואַנס: ניט ענלעך די פריערדיקע מעטהאָדס (פאַנגקשאַנז), טישן פֿון Power Query זענען נישט דערהייַנטיקט אויטאָמאַטיש. אויב אין דער צוקונפֿט עס וועט זיין ענדערונגען אין די מקור דאַטן, איר דאַרפֿן צו רעכט גיט ערגעץ אין די רעזולטאַטן טיש און סעלעקטירן דעם באַפֿעל. דערהייַנטיקן & היט (דערפרישן).

  • ווי צו שפּאַלטן אַ לאַנג טעקסט שטריקל אין פּאַרץ
  • עטלעכע וועגן צו קליי טעקסט פון פאַרשידענע סעלז אין איין
  • ניצן די ווי אָפּעראַטאָר צו פּרובירן טעקסט קעגן אַ מאַסקע

לאָזן אַ ענטפֿערן