የማስያዣ ጽሑፍ በሁኔታ

ጽሁፌን ከበርካታ ህዋሶች በፍጥነት ወደ አንድ መለጠፍ እና በተቃራኒው ረጅም የፅሁፍ ሕብረቁምፊን ወደ ክፍሎች እንዴት እንደሚተነተን አስቀድሜ ጽፌያለሁ። አሁን አንድ የተወሰነ ሁኔታ ሲሟላ ከበርካታ ሕዋሶች ላይ ጽሑፍን እንዴት ማጣበቅ እንደሚቻል - የቅርብ ፣ ግን ትንሽ የተወሳሰበ ተግባርን እንመልከት ። 

የአንድ ኩባንያ ስም ከተለያዩ የሰራተኞቻቸው ኢሜይሎች ጋር ሊዛመድ የሚችል የደንበኞች የውሂብ ጎታ አለን እንበል። የእኛ ተግባር ሁሉንም አድራሻዎች በኩባንያ ስም መሰብሰብ እና ማያያዝ ነው (በነጠላ ሰረዝ ወይም በሴሚኮሎን የተለዩ) ለምሳሌ ለደንበኞች የደብዳቤ መላኪያ ዝርዝር ለማድረግ ፣ ማለትም እንደዚህ ያለ ነገር ለማግኘት።

የማስያዣ ጽሑፍ በሁኔታ

በሌላ አነጋገር ጽሑፉን እንደ ሁኔታው ​​የሚያጣብቅ (ማገናኘት) መሣሪያ እንፈልጋለን - የተግባሩ አናሎግ SUMMESLI (SUMIF)ለጽሑፍ እንጂ።

ዘዴ 0. ፎርሙላ

በጣም የሚያምር አይደለም, ግን ቀላሉ መንገድ. በሚቀጥለው ረድፍ ውስጥ ያለው ኩባንያ ከቀዳሚው የተለየ መሆኑን የሚያረጋግጥ ቀላል ቀመር መጻፍ ይችላሉ. የማይለያይ ከሆነ የሚቀጥለውን አድራሻ በነጠላ ሰረዞች ይለጥፉ። የሚለያይ ከሆነ፣ የተጠራቀመውን “እንደገና እናስጀምረዋለን”፣ እንደገና እንጀምራለን፡-

የማስያዣ ጽሑፍ በሁኔታ

የዚህ አቀራረብ ጉዳቶች ግልጽ ናቸው: ከተገኘው ተጨማሪ ዓምድ ሴሎች ሁሉ, ለእያንዳንዱ ኩባንያ (ቢጫ) የመጨረሻዎቹን ብቻ እንፈልጋለን. ዝርዝሩ ትልቅ ከሆነ, እነሱን በፍጥነት ለመምረጥ, ተግባሩን በመጠቀም ሌላ አምድ ማከል አለብዎት DLSTR (LEN)የተጠራቀሙ ሕብረቁምፊዎች ርዝመት በመፈተሽ ላይ፡-

የማስያዣ ጽሑፍ በሁኔታ

አሁን እነዚያን ማጣራት እና አስፈላጊውን የአድራሻ ማጣበቂያ ለቀጣይ ጥቅም መቅዳት ይችላሉ.

ዘዴ 1. በአንድ ሁኔታ የማጣበቅ ማክሮ ተግባር

ዋናው ዝርዝር በኩባንያ ካልተደረደረ, ከላይ ያለው ቀላል ቀመር አይሰራም, ነገር ግን በ VBA ውስጥ በትንሽ ብጁ ተግባር በቀላሉ ማግኘት ይችላሉ. የቁልፍ ሰሌዳ አቋራጭን በመጫን Visual Basic Editor ን ይክፈቱ Alt + F11 ወይም አዝራሩን በመጠቀም ቪዥዋል ቤዚክ ትር ገንቢ (ገንቢ). በሚከፈተው መስኮት ውስጥ አዲስ ባዶ ሞጁል በምናሌው ውስጥ ያስገቡ አስገባ - ሞጁል እና የተግባራችንን ጽሑፍ እዚያ ይቅዱ፡-

ተግባር ማዋሃድ(የጽሑፍ ክልል እንደ ክልል፣ የፍለጋ ክልል እንደ ክልል፣ ሁኔታ እንደ ሕብረቁምፊ) Dim Delimeter እንደ ሕብረቁምፊ፣ i As Long Delimeter = "," ሙጫዎች እርስ በርሳቸው እኩል አይደሉም - በስህተት እንወጣለን SearchRange. Count <> TextRange.Count ከዚያ MergeIf = CVERr(xlErrRef) መውጫ ተግባር መጨረሻ 'ሁሉንም ሕዋሶች ውስጥ ካለፉ፣ ሁኔታውን ያረጋግጡ እና ጽሑፉን በተለዋዋጭ OutText For i = 1 To SearchRange ውስጥ ሰብስቡ። ሕዋሶች ይቁጠሩ SearchRange ከሆነ።ሴሎች(i) እንደ ሁኔታ ከዚያም OutText = OutText & TextRange.ሴሎች(i) እና Delimeter ቀጣይ እኔ 'ውጤቶችን ያለ መጨረሻ ወሰን አሳይ MergeIf = Left(OutText, Len(OutText) - Len(Delimeter)) መጨረሻ ተግባር  

አሁን ወደ ማይክሮሶፍት ኤክሴል ከተመለሱ, በተግባሮች ዝርዝር ውስጥ (አዝራር fx በቀመር አሞሌ ወይም ትር ውስጥ ቀመሮች - ተግባርን አስገባ) ተግባራችንን ማግኘት ይቻላል ውህደት ከሆነ በምድብ ተጠቃሚ ተገልጻል (በተጠቃሚ የተገለጸ). ለተግባሩ የሚቀርቡት ክርክሮች የሚከተሉት ናቸው።

የማስያዣ ጽሑፍ በሁኔታ

ዘዴ 2. ትክክለኛ ባልሆነ ሁኔታ ጽሑፍን ያዋህዱ

በማክሮችን 13 ኛ መስመር ላይ የመጀመሪያውን ቁምፊ ከተተካ = ወደ ግምታዊ ግጥሚያ ኦፕሬተር እንደ, ከዚያ ከምርጫ መስፈርት ጋር ከመጀመሪያው መረጃ ትክክለኛ ያልሆነ ተዛማጅ በማጣበቅ ማጣበቅን ማከናወን ይቻላል. ለምሳሌ ፣ የኩባንያው ስም በተለያዩ ልዩነቶች ሊፃፍ የሚችል ከሆነ ሁሉንም በአንድ ተግባር እንፈትሻለን እና እንሰበስባቸዋለን።

የማስያዣ ጽሑፍ በሁኔታ

መደበኛ የዱር ካርዶች ይደገፋሉ፡-

  • ኮከብ ምልክት (*) - የማንኛውም ቁምፊዎችን ቁጥር ያመለክታል (አለመኖርን ጨምሮ)
  • የጥያቄ ምልክት (?) - ለማንኛውም ነጠላ ቁምፊ ይቆማል
  • ፓውንድ ምልክት (#) - ለማንኛውም አንድ አሃዝ (0-9) ይቆማል

በነባሪ፣ ላይክ ኦፕሬተር ኬዝ ስሱ ነው፣ ማለትም፣ ለምሳሌ “ኦሪዮን” እና “ኦሪዮን” እንደ የተለያዩ ኩባንያዎች ይገነዘባል። ጉዳይን ችላ ለማለት በሞጁሉ መጀመሪያ ላይ በ Visual Basic አርታኢ ውስጥ መስመሩን ማከል ይችላሉ። አማራጭ ጽሑፍ አወዳድር, ይህም ወደ ላይክ ወደ ጉዳይ የማይሰማ ይሆናል።

በዚህ መንገድ ሁኔታዎችን ለመፈተሽ በጣም ውስብስብ ጭምብሎችን ማዘጋጀት ይችላሉ, ለምሳሌ:

  • 1##??777RUS - የ777 ክልል የሁሉም ታርጋ ምርጫ ከ 1 ጀምሮ
  • LLC * - ስማቸው በ LLC የሚጀምር ሁሉም ኩባንያዎች
  • ##7## - ሁሉም ምርቶች ባለ አምስት አሃዝ ዲጂታል ኮድ ያላቸው፣ ሶስተኛው አሃዝ 7 ነው።
  • ????? - ሁሉም የአምስት ፊደላት ስሞች ፣ ወዘተ.

ዘዴ 3. በሁለት ሁኔታዎች ውስጥ ጽሑፍን ለማጣበቅ የማክሮ ተግባር

በስራው ውስጥ ጽሑፉን ከአንድ ሁኔታ በላይ ማገናኘት ሲያስፈልግ ችግር ሊኖር ይችላል. ለምሳሌ በቀደመው ጠረጴዛችን ላይ ከከተማው ጋር አንድ ተጨማሪ አምድ ተጨምሮበት እና ማጣበቂያው ለአንድ ኩባንያ ብቻ ሳይሆን ለአንድ ከተማም መከናወን አለበት ብለን እናስብ። በዚህ አጋጣሚ፣ ሌላ የክልል ፍተሻ በመጨመር ተግባራችን በትንሹ ዘመናዊ መሆን አለበት።

የተግባር ውህደት (TextRange As Range፣ SearchRange1 እንደ Range፣ Condition1 As String፣ SearchRange2 As Range፣ Condition2 As String) Dim Delimeter As String፣ i As Long Delimeter = ","" ገዳቢ ቁምፊዎች (በቦታ ወይም ወዘተ ሊተኩ ይችላሉ) ሠ.) የማረጋገጫ እና የማጣበቅ ክልሎች እርስ በእርሳቸው እኩል ካልሆኑ በስህተት ይውጡ SearchRange1.Count <> TextRange.Count or SearchRange2.Count <> TextRange.Count then MergeIfs = CVERr(xlErrRef) ውጣ ተግባር ካለቀ በሁሉም ሴሎች ውስጥ ይሂዱ ፣ ሁሉንም ሁኔታዎች ይፈትሹ እና ጽሑፉን በተለዋዋጭ ይሰብስቡ OutText For i = 1 To SearchRange1.Cells.Count If SearchRange1.Cells(i) = Condition1 And SearchRange2.Cells(i) = Condition2 ከዚያም OutText = OutText & TextRange.Cells(i) እና Delimeter ያበቃል ከሚቀጥለው እኔ 'ውጤቶችን ያለመጨረሻው ገደብ አሳይ MergeIfs = Left(OutText, Len(OutText) - Len(Delimeter)) መጨረሻ ተግባር  

በትክክል በተመሳሳይ መንገድ ይተገበራል - ክርክሮች ብቻ አሁን የበለጠ መገለጽ አለባቸው:

የማስያዣ ጽሑፍ በሁኔታ

ዘዴ 4. በሃይል መጠይቅ ውስጥ መቧደን እና ማጣበቅ

በVBA ውስጥ ያለ ፕሮግራሚንግ ችግሩን መፍታት ይችላሉ፣ ነፃውን የኃይል መጠይቅ ተጨማሪውን ከተጠቀሙ። ለኤክሴል 2010-2013 እዚህ ሊወርድ ይችላል, እና በ Excel 2016 ቀድሞውኑ በነባሪነት ተገንብቷል. የእርምጃዎች ቅደም ተከተል እንደሚከተለው ይሆናል.

የኃይል መጠይቅ ከመደበኛ ጠረጴዛዎች ጋር እንዴት እንደሚሰራ አያውቅም, ስለዚህ የመጀመሪያው እርምጃ ጠረጴዛችንን ወደ "ብልጥ" መቀየር ነው. ይህንን ለማድረግ, ይምረጡት እና ጥምሩን ይጫኑ መቆጣጠሪያ+T ወይም ከትር ውስጥ ይምረጡ ቤት - እንደ ጠረጴዛ ቅርጸት (ቤት - እንደ ሰንጠረዥ ቅርጸት). ከዚያ በሚታየው ትር ላይ ግንበኛ (ዲዛይን) የሠንጠረዡን ስም ማዘጋጀት ይችላሉ (መስፈርቱን ትቼዋለሁ ማውጫ 1):

የማስያዣ ጽሑፍ በሁኔታ

አሁን ሰንጠረዡን ወደ የኃይል መጠይቅ ተጨማሪው ውስጥ እንጫን። ይህንን ለማድረግ, በትሩ ላይ መረጃ (ኤክሴል 2016 ካለህ) ወይም በ Power Query ትሩ ላይ (ኤክሴል 2010-2013 ካለህ) ጠቅ አድርግ ከጠረጴዛው (መረጃ - ከሠንጠረዥ):

የማስያዣ ጽሑፍ በሁኔታ

በሚከፈተው የጥያቄ አርታኢ መስኮት ውስጥ አርዕስቱን ጠቅ በማድረግ ዓምዱን ይምረጡ ኩባንያ እና ከላይ ያለውን ቁልፍ ይጫኑ ቡድን (ቡድን በ). የአዲሱን ዓምድ ስም እና በቡድን ውስጥ ያለውን የአሠራር አይነት ያስገቡ - ሁሉም መስመሮች (ሁሉም ረድፎች):

የማስያዣ ጽሑፍ በሁኔታ

እሺን ጠቅ ያድርጉ እና ለእያንዳንዱ ኩባንያ የተከፋፈሉ እሴቶች አነስተኛ ጠረጴዛ እናገኛለን። በውጤቱ አምድ ውስጥ በሴሎች ነጭ ጀርባ ላይ (በጽሑፉ ላይ አይደለም!) በግራ ጠቅ ካደረጉ የጠረጴዛዎቹ ይዘት በግልጽ ይታያል።

የማስያዣ ጽሑፍ በሁኔታ

አሁን አንድ ተጨማሪ አምድ እንጨምር ፣ ተግባሩን በመጠቀም ፣ የአድራሻ አምዶችን ይዘቶች በእያንዳንዱ ሚኒ-ጠረጴዛዎች ውስጥ በማጣበቅ ፣ በነጠላ ሰረዞች ይለያሉ። ይህንን ለማድረግ, በትሩ ላይ አምድ ያክሉ እንጫናለን ብጁ አምድ (አምድ አክል - ብጁ አምድ) እና በሚታየው መስኮት ውስጥ የአዲሱን አምድ ስም እና የማጣመጃ ቀመሩን በ M ቋንቋ በሃይል መጠይቅ ውስጥ ያስገቡ፡

የማስያዣ ጽሑፍ በሁኔታ

ሁሉም M-ተግባራቶች ኬዝ ሚስጥራዊነት ያላቸው (እንደ ኤክሴል ሳይሆን) መሆናቸውን ልብ ይበሉ። ላይ ጠቅ ካደረጉ በኋላ OK ከተጣበቁ አድራሻዎች ጋር አዲስ አምድ እናገኛለን

የማስያዣ ጽሑፍ በሁኔታ

ቀድሞውንም አላስፈላጊውን አምድ ለማስወገድ ይቀራል የጠረጴዛ አድራሻዎች (በርዕሱ ላይ በቀኝ ጠቅ ያድርጉ) አምድ ሰርዝ) እና ትሩን ጠቅ በማድረግ ውጤቱን ወደ ሉህ ይስቀሉ ቤት - ዝጋ እና አውርድ (ቤት - ዝጋ እና ጭነት):

የማስያዣ ጽሑፍ በሁኔታ

አስፈላጊ ንዝረትከቀደምት ዘዴዎች (ተግባራት) በተለየ የኃይል መጠይቅ ሰንጠረዦች በራስ-ሰር አይዘመኑም። ወደፊት በምንጭ ውሂብ ላይ ለውጦች ካሉ በውጤቶች ሠንጠረዥ ውስጥ በማንኛውም ቦታ ላይ በቀኝ ጠቅ ማድረግ እና ትዕዛዙን መምረጥ ያስፈልግዎታል አዘምን እና አስቀምጥ (አድስ).

  • ረጅም የጽሑፍ ሕብረቁምፊን ወደ ክፍሎች እንዴት እንደሚከፋፈል
  • ከተለያዩ ሕዋሳት ጽሑፍን ወደ አንድ ለማጣበቅ ብዙ መንገዶች
  • የላይክ ኦፕሬተርን በመጠቀም ጽሑፍን ጭምብል ላይ ለመሞከር

መልስ ይስጡ