पहले नाम से पहले दो अक्षर और आखिरी नाम से पहले दो अक्षर का मेल


9

मेरे पास उपयोगकर्ता नाम की एक स्प्रेडशीट है।

कॉलम के एक ही सेल में पहले और अंतिम नाम हैं A

क्या कोई सूत्र है जो पहले नाम (पहले शब्द) के पहले दो अक्षर और अंतिम नाम (दूसरे शब्द) के पहले दो अक्षरों को समाप्‍त करेगा?

उदाहरण के लिए John Doe, बनना चाहिए JoDo

मैंने कोशिश की

=LEFT(A1)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,IFERROR(FIND(" ",SUBSTITUTE(A1," ","",1)),LEN(A1))-IFERROR(FIND(" ",A1),LEN(A1)))

लेकिन यह मुझे JoDoeपरिणाम के रूप में देता है ।



क्या कोई उत्तर छल करता है? (यदि हां, तो क्या आप इसे पोस्ट के बचे चेक मार्क पर क्लिक करके उत्तर के रूप में चिह्नित कर सकते हैं।)
BruceWayne

जवाबों:


15

हाँ; प्रत्येक व्यक्ति को केवल एक प्रथम और अंतिम नाम दिया गया है, और यह हमेशा एक स्थान से अलग किया जाता है जिसका आप नीचे उपयोग कर सकते हैं:

=LEFT(A1,2)&MID(A1,SEARCH(" ",A1)+1,2)

मैं केवल उन मान्यताओं के आधार पर इस उत्तर को आधार बना सकता हूं क्योंकि यह आपके द्वारा प्रदान किया गया है।

या यदि आप चाहते हैं कि अभी भी एक स्थान शामिल हो:

=LEFT(A1,2)&" "&MID(A1,SEARCH(" ",A1)+1,2)

2
@prweq नो प्रोब्स, इसे सही
मानें

सरल और सबसे आसान समाधान समझना। (खैर, ;-) के FIND()बजाय का उपयोग करने के अलावा SEARCH()) जब से आप मान रहे हैं कि हमेशा एक अंतरिक्ष विभाजक है, तो आपके दूसरे सूत्र को सरल किया जा सकता है=LEFT(A1,2)&MID(A1,SEARCH(" ",A1),3)
रॉबिनटेकस

4
@ राजेश मुझे पता है। इसलिए मेरा जवाब शुरू होता हैassuming each person only has a First and Last name
पीटरएच

2
झूठे प्रोग्रामर नामों के बारे में विश्वास करते हैं ; ऐसा नहीं है कि यह समझ में आने से उन सभी मामलों को संभालने के लिए समझ में आता है यदि आपका सॉफ़्टवेयर अंतरराष्ट्रीय पहुंच नहीं है
हारून

1
मैं सुझाव देता हूं कि TRIM(LEFT(A1,2))यदि उनके पहले नाम में केवल एक अक्षर है, लेकिन उन विशेष मामलों को मैन्युअल रूप से भी जांचना आसान हो सकता है।
इंजीनियर टोस्ट

11

और चीजों को गोल करने के लिए, यहां एक समाधान दिया गया है जो पहले नाम के पहले दो वर्णों को लौटाएगा, और अंतिम नाम के पहले दो पात्रों को, लेकिन मध्य नामों के लिए भी खाता है।

=LEFT(A1,2)&LEFT(MID(A1,FIND("~~~~~",SUBSTITUTE(A1," ","~~~~~",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)),2)

यहाँ छवि विवरण दर्ज करें

सूत्र के मुख्य भाग के लिए @Kyle को धन्यवाद


1
आपने मुझे इसके लिए हरा दिया ;-) (यह आधी रात अच्छी तरह से बीती थी और मुझे सोने की ज़रूरत थी - इसे बाद में अपने उत्तर में जोड़ने की योजना बना रहा था।) आपके सूत्र में थोड़ा सा सुधार ~चार के बजाय एक का उपयोग करना होगा । यदि आप चिंतित हैं कि एक टिल्डा का उपयोग एक नाम के भाग के रूप में किया जा सकता है (!) या, अधिक संभावना है, गलती से टाइप किया गया है, बस किसी भी कीबोर्ड पर दिखाई देने वाले वर्ण का उपयोग करें। मैं उपयोग करना पसंद करता हूं §एक और अच्छा है।
रॉबिनटेकस

@BruceWayne ,, आपका फॉर्मूला अधिक सक्षम है ,,,, क्योंकि यह केवल फ़र्स्ट एंड लास्ट नाम को एक्सेस कर रहा है, मध्य नाम को अनदेखा करता है ,,, अप वोटिंग esh
Rajesh S

@ राजेश स्पेनिश के नाम वाले लोगों के बारे में , जैसे कि पूर्व एफ 1 ड्राइवर फर्नांडो अलोंसो डीआज़, जिनके पास 1 नाम, 2 उपनाम और कोई मध्य नाम नहीं है? (या यहां तक ​​कि किंग फेलिप जुआन पाब्लो अल्फोंसो डी टोडोस लॉस सैंटोस डे बोरबोन वाई डे
ग्रीशिया

2
@ क्रोनोसाइडल अब हम खरगोशों के छेद के नीचे जा रहे हैं जो प्रोग्रामर नामों के बारे में मानते हैं
ब्रूसवेयेन

1
@robinCS - अच्छा फोन! मुझे एक और उत्तर (सूत्र में) से सूत्र मिला, और वास्तव में बहुत गहरा नहीं खोदा। सुझावों के लिए धन्यवाद!
BruceWayne

9

यह एक और तरीका है ...

वर्कशीट का स्क्रीनशॉट

  • एक नाम
  • बी - =CONCATENATE(LEFT(A1,2),LEFT(RIGHT(A1,(LEN(A1)-FIND(" ",A1))),2))

आप आगे भी जा सकते हैं और उन सभी अतिरिक्त स्तंभों को =CONCATENATE(LEFT(A1,2),LEFT(RIGHT(A1,(LEN(A1)-FIND(" ",A1))),2))
हटाकर

हाँ, मैंने कुछ पल बाद ऐसा किया!
12

हाँ, मैंने देखा कि आपने उत्तर को संपादित किया, अच्छा उत्तर!
पीटरएच

5

सबसे पहले, मैं कहना चाहूंगा कि पीटर का जवाब सबसे सरल और समझने में आसान है। (हालांकि मेरी प्राथमिकता FIND()इसके बजाय उपयोग करना है SEARCH()- दो कम अक्षर टाइप करने से आरएसआई ;-) से बचने में मदद मिलती है

एक वैकल्पिक उत्तर जो न तो उपयोग करता है MID(), LEFT()न ही RIGHT(), बल्कि REPLACE()नाम के अवांछित भागों को हटाने के लिए उपयोग करता है:

=REPLACE(REPLACE(A1,FIND(" ",A1)+3,LEN(A1),""),3,FIND(" ",A1)-2,"")

स्पष्टीकरण:

आंतरिक REPLACE(A1, FIND(" ",A1)+3, LEN(A1), "")अंतिम नाम के तीसरे चरित्र से पात्रों को हटाता है , जबकि बाहरी पात्रों को पहले नाम के तीसरे चरित्र से हटाता है और अंतरिक्ष को शामिल करता है।REPLACE(inner_replace, 3, FIND(" ",A1)-2, "")


परिशिष्ट 1:

उपरोक्त सूत्र को एकल मध्य नाम के लिए अनुमति देने के लिए भी अनुकूलित किया जा सकता है:

=REPLACE(REPLACE(A1,IFERROR(FIND(" ",A1,FIND(" ",A1)+1),FIND(" ",A1))+3,LEN(A1),""),3,IFERROR(FIND(" ",A1,FIND(" ",A1)+1),FIND(" ",A1))-2,"")

के FIND(" ",A1)साथ बदलकर IFERROR(FIND(" ",A1,FIND(" ",A1)+1), FIND(" ",A1))

FIND(" ", A1, FIND(" ",A1)+1)दूसरी जगह पाता है (पहले स्थान के बाद अंतरिक्ष के लिए खोज शुरू करके) या त्रुटियों अन्यथा। यदि कोई दूसरा स्थान नहीं है, तो पहला स्थान पाता है।
IFERROR(find_second_space, FIND(" ",A1))


यह (लंबे समय तक प्रसारित) संस्करण किसी भी मध्य नाम के लिए अनुमति देता है:

=REPLACE(REPLACE(A1,FIND("§",SUBSTITUTE(A1," ","§",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+3,LEN(A1),""),3,FIND("§",SUBSTITUTE(A1," ","§",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))-2,"")

इस मामले FIND(" ",A1)में साथ बदल दिया गया है FIND("§", SUBSTITUTE(A1," ","§",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))

LEN(A1)-LEN(SUBSTITUTE(A1," ",""))रिक्त स्थान की संख्या गिनता है। के साथ अंतिम स्थान बदलता है । पहले को खोजता है जो अंतिम स्थान को खोजने के समान है।
SUBSTITUTE(A1, " ", "§", count_of_spaces)§
FIND("§", last_space_replaced_string)§

( §निश्चित रूप से, पूर्ण नाम स्ट्रिंग में मौजूद नहीं होने की गारंटी वाले किसी भी चरित्र के साथ प्रतिस्थापित किया जा सकता है। एक अधिक सामान्य, सुरक्षित विकल्प का उपयोग करना होगा CHAR(1)।)


ध्यान दें, निश्चित रूप से, ब्रूसवेने का जवाब समाधान को समझने में सबसे सरल और सबसे आसान है जो किसी भी संख्या में मध्य नामों की अनुमति देता है। खैर यह था। जब तक मैंने अपना दूसरा उत्तर पोस्ट नहीं किया , वह ;-)


परिशिष्ट 2:

सभी समाधानों को केवल एक नाम के मामले में पूरा करने के लिए अनुकूलित किया जा सकता है (यदि एक चार चरित्र परिणाम के लिए एक आवश्यकता है) IFERROR()तो उन्हें एक फ़ंक्शन के भीतर लपेटकर ऐसा किया जाता है:

=IFERROR(solution, alternate_formula)

ध्यान दें कि ऊपर एक सामान्य मामला सूत्र है, और एक विशिष्ट समाधान के लिए अधिक कुशल संशोधन करना संभव हो सकता है। उदाहरण के लिए, यदि किसी एकल नाम के मामले में अंतिम दो अक्षरों के साथ पहले दो अक्षरों में शामिल होना है, तो पीटरह का जवाब इस तरह से अधिक कुशलता से अनुकूलित किया जा सकता है:

=LEFT(A1,2)&MID(A1,IFERROR(SEARCH(" ",A1)+1,LEN(A1)-1),2)


किसी एक अक्षर के नाम के लिए अनुमति देने के लिए पहले नाम या एक प्रारंभिक (एक स्थान या बिंदु को दूसरे वर्ण के रूप में स्वीकार्य नहीं है) निम्नलिखित किसी भी समाधान के साथ इस्तेमाल किया जा सकता है:

=SUBSTITUTE(SUBSTITUTE(solution, " ", single_char), ".", single_char))

ध्यान दें कि एकल वर्ण या तो हार्ड-कोडित हो सकता है या नाम से गणना की जा सकती है। (या ""अंतरिक्ष या डॉट को हटाने के लिए उपयोग करें।)


अंत में, यदि आपको वास्तव में उस मामले के लिए पूरा करने की आवश्यकता है जहां पूरा नाम केवल एक एकल चरित्र है! (), केवल एकल-नाम-सूत्र को दूसरे के साथ लपेटें IFERROR()। (यह मानते हुए कि वैकल्पिक सूत्र उस विशेष मामले का ध्यान नहीं रखता है।)


परिशिष्ट 3:

अंत में, अंत में (कोई, वास्तव में * ;-)) एकाधिक लगातार और / या प्रमुख के लिए पूरा करने के लिए / रिक्त स्थान अनुगामी, का उपयोग TRIM(A1)करने के बजाय A1


* मैं पाठक के लिए एक अभ्यास के रूप में श्री टी जैसे अंतिम नाम के लिए एक पत्र छोड़ दूँगा।

संकेत: =solution &IF(MID(A1,LEN(A1)-1,1)=" ", single_char, "")


1
जैसा कि आपके उत्तर हमेशा देखते हैं कि वे एक्सेल के एक उन्नत उपयोगकर्ता गाइड से हैं! यह शीर्ष मतदान का जवाब होगा जिसे आपने पहले पोस्ट किया था!
पीटर डे

@PeterH पूरक के लिए धन्यवाद। मैंने हॉट नेटवर्क प्रश्न सूची को हिट करने के बाद केवल प्रश्न को पार किया, इसलिए मुझे पार्टी में थोड़ी देर हो गई
;;

2

इस उत्तर के आधार पर , यहां एक सुरुचिपूर्ण समाधान है जो किसी भी मध्य नाम के साथ काम करता है:

=LEFT(A1,2)&LEFT(TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1))),2)

स्पष्टीकरण:

SUBSTITUTE(A1, " ", REPT(" ",LEN(A1)))पूरे स्ट्रिंग की लंबाई के बराबर रिक्त स्थान के साथ इंटर-वर्ड स्पेस (एस) को बदलता है। मनमाने ढंग से बड़ी संख्या के बजाय स्ट्रिंग लंबाई का उपयोग करना किसी भी लंबाई स्ट्रिंग के लिए सूत्र कार्यों की गारंटी देता है और इसका मतलब है कि यह इतनी कुशलता से करता है।

RIGHT(space_expanded_string, LEN(A1))रिक्त स्थान का एक समूह द्वारा प्रस्तुत सबसे सही शब्द निकालता है। *

TRIM(space_prepended_rightmost_word) सबसे सही शब्द निकालता है।

LEFT(rightmost_word, 2) सबसे सही शब्द (अंतिम नाम) के पहले दो अक्षर निकालता है।


* चेतावनी: यदि किसी उपयोगकर्ता नाम के लिए अनुगामी स्थान सम्‍मिलित करना संभव है, तो आपको पहले तर्क के स्थान SUBSTITUTE()को यथास्‍थापित A1करना होगा TRIM(A1)। शब्दों के बीच के रिक्त स्थान और कई लगातार रिक्त स्थान को ठीक से संभाला जाता है A1


आपका प्रयास ठीक कर रहा है

अपने प्रयास किए गए समाधान पर एक नज़र डालते हुए, ऐसा लगता है कि आप पहले शब्द के पहले दो अक्षरों (यानी पहला नाम) और दूसरे शब्द के पहले दो अक्षरों को समाहित करने के लिए एक कार्य सूत्र के बहुत करीब थे यदि यह मौजूद था।

ध्यान दें कि यदि किसी उपयोगकर्ता नाम में मध्य नाम शामिल थे, तो सही सूत्र गलत तरीके से अंतिम नाम के बजाय पहले मध्य नाम से पहले दो अक्षरों को पकड़ लेगा (यह मानकर कि आपका इरादा वास्तव में उन्हें अंतिम नाम से निकालना है)।

इसके अलावा, यदि सभी उपयोगकर्ता नाम में केवल पहला नाम या पहला नाम और अंतिम नाम शामिल है, तो सूत्र अनावश्यक रूप से जटिल है और इसे सरल बनाया जा सकता है।


यह देखने के लिए कि सूत्र कैसे काम करता है और इसे ठीक करता है, यह आसान है यदि इसे पूर्व-निर्धारित किया गया है, जैसे:

=
LEFT(A1,2) &
MID(
  A1,
  IFERROR(FIND(" ",A1), LEN(A1)) + 1,
  IFERROR(
    FIND(" ", SUBSTITUTE(A1," ","",1)),
    LEN(A1)
  )
  - IFERROR(FIND(" ",A1), LEN(A1))
)


यह समझने के लिए कि यह कैसे काम करता है, पहले देखें कि क्या होता है जब A1कोई स्थान नहीं होता है (अर्थात इसमें केवल एक ही नाम होता है)। सभी IFERROR()कार्यों के बाद से अपने दूसरे तर्क के रूप में मूल्यांकित FIND()एक रिटर्न #VALUE!त्रुटि यदि खोज स्ट्रिंग लक्ष्य स्ट्रिंग में नहीं पाया जाता है:

=
LEFT(A1,2) &
MID(
  A1,
  LEN(A1) + 1,
  LEN(A1)
  -LEN(A1)
)

तीसरा तर्क MID()शून्य का मूल्यांकन करता है, इसलिए फ़ंक्शन आउटपुट ""और सूत्र परिणाम एकल नाम के पहले दो वर्ण हैं।


अब देखिए कि वास्तव में दो नाम हैं (यानी बिल्कुल एक जगह है)। पहला और तीसरा IFERROR()कार्य उनके पहले तर्कों का मूल्यांकन करता है लेकिन दूसरा अपने दूसरे तर्क का मूल्यांकन करता है क्योंकि FIND(" ", SUBSTITUTE(A1," ","",1))पहले को हटाने के बाद दूसरे स्थान को खोजने का प्रयास किया जाता है, और केवल एक:

=
LEFT(A1,2) &
MID(
  A1,
  FIND(" ",A1) + 1,
  LEN(A1)
  - FIND(" ",A1)
)

स्पष्ट रूप से, MID()दूसरे शब्द (अर्थात अंतिम नाम) को उसकी संपूर्णता में लौटाता है, और सूत्र परिणाम पहले नाम के पहले दो अक्षर हैं और अंतिम नाम के सभी अक्षर हैं।


संपूर्णता के लिए, हम उस मामले को भी देखेंगे जहां कम से कम तीन नाम हैं, हालांकि यह काफी स्पष्ट होना चाहिए कि अब सूत्र को कैसे ठीक किया जाए। इस बार, सभी IFERROR()कार्य उनके पहले तर्कों का मूल्यांकन करते हैं:

=
LEFT(A1,2) &
MID(
  A1,
  FIND(" ",A1) + 1,
  FIND(" ", SUBSTITUTE(A1," ","",1))
  - FIND(" ",A1)
)

यह पिछले मामले में था की तुलना में थोड़ा कम स्पष्ट है, लेकिन MID()पूरे दूसरे शब्द (यानी पहले मध्य नाम) को वापस लौटाता है । इस प्रकार, सूत्र परिणाम पहले नाम के पहले दो अक्षर हैं और उसके बाद पहले मध्य नाम के सभी अक्षर हैं।


जाहिर है, उत्पादन LEFT()के पहले दो पात्रों को प्राप्त करने के लिए फिक्स का उपयोग करना है MID():

=
LEFT(A1,2) &
LEFT(
  MID(
    A1,
    IFERROR(FIND(" ",A1), LEN(A1)) + 1,
    IFERROR(
      FIND(" ", SUBSTITUTE(A1," ","",1)),
      LEN(A1)
    )
    - IFERROR(FIND(" ",A1), LEN(A1))
  ),
  2
)


सरलीकरण मैं उपर्युक्त को बदलने के लिए है LEFT(MID(…,…,…), 2)के साथ MID(…,…,2):

=
LEFT(A1,2) &
MID(
  A1,
  IFERROR(FIND(" ",A1), LEN(A1)) + 1,
  2
)

या एक लाइन पर:

=LEFT(A1,2)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,2)

यह अनिवार्य रूप से एकल नामों के साथ काम करने के लिए संशोधित पीटरह का समाधान है (जिस स्थिति में, परिणाम केवल नाम के पहले दो अक्षर हैं)।


नोट: पूर्व -निर्धारित सूत्र वास्तव में काम करते हैं यदि दर्ज किया गया हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.