नया फॉर्मूला मूल एक की तुलना में थोड़ा लंबा है, क्योंकि MID(…)
फ़ंक्शन को कॉपी करना और दूसरे दो बार उपयोग करना है।
निम्न कॉलम में कॉपी और पेस्ट / भरने के लिए निम्न फॉर्मूला ( Ctrl+ Shift+ Enter) दर्ज F2
करें:
{=
TEXTJOIN(
";",
TRUE,
IF(
ISNUMBER(
--MID(
SUBSTITUTE(E2,";",REPT(" ",99)),
99*(ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))-1)
+(1=ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))),
99
)
),
INDEX(
(B:B),
N(IF(1,
MATCH(
--MID(
SUBSTITUTE(E2,";",REPT(" ",99)),
99*(ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))-1)
+(1=ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))),
99
),
(A:A),
0
)
))
),
TRIM(
MID(
SUBSTITUTE(E2,";",REPT(" ",99)),
99*(ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))-1)
+(1=ROW(OFFSET($A$1,,,LEN(E2)-LEN(SUBSTITUTE(E2,";",""))+1))),
99
)
)
)
)}
ध्यान दें कि सूत्र में परिवर्तन केवल एक जोड़ा IF()
कार्य है जो यह जांचता है कि निकाला गया मूल्य एक संख्या या पाठ है, और इसे अलग तरीके से संसाधित करता है। पाठ मान को पहले की तरह लुकअप करने के लिए उपयोग किया जाता है, जबकि संख्या मान लौटाया जाता है।
संशोधित सरल एक्सेल 2016 (केवल विंडोज) सूत्र है:
{=TEXTJOIN(";",TRUE,IF(ISNUMBER(--FILTERXML("<a><b>" & SUBSTITUTE(E2, ";", "</b><b>") & "</b></a>", "//b")),INDEX(B:B,N(IF(1,MATCH(--FILTERXML("<a><b>" & SUBSTITUTE(E2, ";", "</b><b>") & "</b></a>", "//b"),A:A,0)))),FILTERXML("<a><b>" & SUBSTITUTE(E2, ";", "</b><b>") & "</b></a>", "//b")))}