मुझे एक्सेल में ऐसी कोशिकाएँ कैसे मिलती हैं जिनमें आईपी पते ठीक से छाँटने के लिए होते हैं?


34

मैं वर्तमान में आईपी पतों (उनमें से हजारों) की एक बड़ी सूची के साथ काम कर रहा हूं।

हालाँकि, जब मैं IP पते वाले कॉलम को सॉर्ट करता हूं, तो वे इस तरह से सॉर्ट नहीं करते हैं जो सहज या आसान हो।

उदाहरण के लिए, यदि मैं निम्नानुसार आईपी पते दर्ज करता हूं:

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

और फिर अगर मैं आरोही क्रम में छाँटता हूँ तो मुझे यह मिलता है:

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

क्या मेरे लिए कोशिकाओं को प्रारूपित करने का कोई तरीका है, उदाहरण के लिए, 17.255.253.65 का IP पता 1.128.96.254 के बाद और 103.236.162.56 से पहले आरोही क्रम में क्रमबद्ध होता है?

यदि नहीं, तो क्या मेरे लिए इस अंतिम उद्देश्य को प्राप्त करने का कोई और तरीका है?


3
सॉर्ट करना सेल फ़ॉर्मेटिंग से प्रभावित नहीं होता है।
ब्लैकवुड

1
यह दिलचस्प है - मुझे पूरा यकीन था कि एक सेल का प्रारूप कुछ मामलों में छँटाई को प्रभावित करेगा और सोचा शायद यह उनमें से एक था। स्पष्टीकरण के लिए धन्यवाद!
मोनोमेथ

1
और अगर किसी को भी IPv6 पतों को संभालने की जरूरत हो तो ब्रूस आपकी मदद करता है!
क्रैगी

जवाबों:


42

जैसा कि आप महसूस कर सकते हैं, आपके आईपी पते को पाठ के रूप में माना जाता है न कि संख्याओं के रूप में। उन्हें पाठ के रूप में क्रमबद्ध किया जा रहा है, जिसका अर्थ है कि "162" से शुरू होने वाले पते "20." के साथ शुरू होने वाले पते से पहले आएंगे। (क्योंकि चरित्र "1" चरित्र "2" से पहले आता है।

आप इस उत्तर में दिए गए फॉर्मूले का उपयोग कर सकते हैं: https://stackoverflow.com/a/31615838/4424957 , IP एड्रेस को उसके भागों में विभाजित करने के लिए।

यदि आपके IP पते कॉलम A में हैं, तो नीचे दिखाए गए अनुसार कॉलम BE जोड़ें।

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

सूत्र दर्ज करें

=VALUE(TRIM(MID(SUBSTITUTE($A2,".",REPT(" ",999)),(B$1)*999-998,999)))

सेल बी 2 में और इसे प्रत्येक आईपी पते के चार भागों को प्राप्त करने के लिए सभी पंक्तियों में बीई को कॉपी करें। अब स्तंभ B द्वारा संपूर्ण श्रेणी को E के माध्यम से क्रमबद्ध करें (उस क्रम में) जैसा कि नीचे दिखाया गया है:

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

यदि आप सहायक स्तंभ (BE) नहीं देखना चाहते हैं, तो आप उन्हें छिपा सकते हैं।


12
चार स्तंभों को विभाजित करने के बजाय, शायद first*256^3+second*256^2+third*256+fourthएक कॉलम में बाइट्स को "संक्षिप्त" करना बेहतर होगा ?
रुस्लान

खासकर जब से आईपीवी 4 पते वास्तव में सिर्फ 32 बिट नंबर हैं। IP पते प्रदर्शित करने का चार 4 बिट नंबर तरीका पूरी तरह से मानव पठनीयता के लिए है।
कैट

@ मैं सहमत हूं कि यह काम करेगा, और इसे केवल चार के बजाय एक सहायक कॉलम की आवश्यकता है। लेकिन उस एक कॉलम का फॉर्मूला लंबा नहीं होगा, इसलिए मैंने चार कॉलमों का इस्तेमाल करना चुना (मैं शायद किसी भी हाल में उन्हें छिपाऊंगा)।
ब्लैकवुड

10

सबसे आसान, 3 चरणों का समाधान मैं आपको सुझाव दे सकता हूं ,,,

  1. IP एड्रेस कॉलम का चयन करें, टेक्स्ट को कॉलम कमांड पर लागू करें ।

  2. आसन्न कॉलम में यह सूत्र लिखें

    = CONCATENATE (बी 3, "।", सी 3, "।", डी 3, "।", ई 3)

  3. अंत में बढ़ते क्रम में क्रमबद्ध करें।

स्क्रीन शॉट की जाँच करें।

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

ध्यान दें:

लाल मूल आईपी पता (कॉलम ए में) है।

ग्रीन ने पाठ को कॉलम (कॉलम बी से ई) पर लागू किया।

ब्लैक के बाद कॉन्टेनेट और सॉर्टिंग (कॉलम एफ) लगाया जाता है।

मूल रूप से इसका कारण बहुत ही सरल है, आईपी एड्रेस टेक्स्ट डेटा है और एक्सेल नंबर को चालू करने के लिए किसी भी सेल फॉर्मेट को स्वीकार नहीं करता है।

आशा है कि यह आपकी मदद करेगा।


4
यह भयानक। आप कभी भी अलग-अलग पंक्तियों के डेटा को मिलाना नहीं चाहते हैं।
मैक्सडब्ल्यू

@MaxW ,, मुझे वो नहीं मिल रहा है जो आप कहना चाहते हैं !!
राजेश एस

2
उसका मतलब है कि आपको मूल कॉलम ए को सॉर्ट में शामिल करना चाहिए था, इसलिए प्रत्येक पते पर आईपी पते समान होंगे।
बैंडनरैच

1
नहीं,, कुछ भी गलत नहीं है मैंने किया था, ओपी की मांग थी कि आईपी एड्रेस को नेचुरल ऑर्डर में सॉर्ट किया जाए। कॉलम F ने BLACK में IP एड्रेस सॉर्ट किया है।
राजेश एस

1
+1 यह पेज का सबसे आसान समाधान है। @ राजेश ने शायद आपके उत्तर में 'समायोजित' शब्द को 'निकटवर्ती' में बदल दिया - मुझे लगा कि आपका मतलब Text To Columnवहाँ के किसी एक कॉलम से है। @MaxW, लेआउट सिर्फ प्रदर्शन के लिए है। यदि आप चाहते हैं कि मूल IP केवल चरण 2 को अनदेखा कर दे, तो स्वीकृत जवाब में बड़े पैमाने पर "VALUE (TRIM (MID (SUBSTITUTE)) सूत्र को 'टेक्स्ट टू कॉलम' द्वारा प्रतिस्थापित किया जाना चाहिए और शेष उत्तर मूल रूप से इस पर समान है।
mcalex

9

इसी समस्या को हल करने के लिए मैंने कुछ समय पहले एक VBA फ़ंक्शन लिखा था। यह IPv4 पते का एक गद्देदार संस्करण उत्पन्न करता है जो सही तरीके से बनता है।

Function SortAddress(Address As String)                     '   format address as XXX.XXX.XXX.XXX to permit sorting

Dim FirstByte As Integer, LastByte As Integer, I As Integer

SortAddress = ""
FirstByte = 1

For I = 0 To 2                                          '   process the first three bytes

    LastByte = InStr(FirstByte, Address, ".")           '   find the dot
                                                        '   append the byte as 3 digits followed by dot
    SortAddress = SortAddress & Format(Mid(Address, FirstByte, LastByte - FirstByte), "000\.")

    FirstByte = LastByte + 1                            '   shift the start pointer

Next I

SortAddress = SortAddress & Format(Mid(Address, FirstByte), "000") ' process the last byte

End Function

सरल उदाहरण:

परिणाम

परिणाम

सूत्र

सूत्र

आप 'सॉर्टेबल' कॉलम को छाँट सकते हैं और इसे छिपा सकते हैं।


4
मैं केवल यह नोट करना चाहता हूं कि छांटे जाने योग्य आईपी एड्रेस मूल एक से अलग पते के रूप में पार्स करेगा (क्योंकि कुछ बेवकूफों ने उन्हें ऑक्टल के रूप में व्याख्या करने के लिए चुना था)। इसलिए केवल छँटाई के लिए उनका उपयोग करें और उन्हें उचित आईपी न मानें।
कोडइंचोस

यदि आप vba को बाहर निकालने जा रहे हैं, तो सिर्फ vba क्यों नहीं छँटाई है
रिचर्ड टिंगल


6

यहां एक उत्तर दिया गया है जो आपकी तालिका का केवल 1 स्तंभ लेगा और IPv4 पते को आधार संख्या 10 में परिवर्तित करेगा।

चूंकि आप अपना डेटा कॉलम "एम" में डाल रहे हैं, यह सेल एम 2 (एम 1 लेबल होने) में शुरू होता है। कोड के रूप में इसे एनकैप्सुलेट करने से एक भयानक गड़बड़ होती है, इसलिए मैंने ब्लॉकक्वाट का उपयोग किया है:

= INT (LEFT (M2, FIND ("।, M2) - 1)) * 256 ^ 3 + INT (MID (M2, FIND ("। ", M2) + 1, FIND (" ", M2, FIND) ("।", M2) + 1) - FIND (",", M2) -1)) * 256 ^ 2 + INT (MID (M2, FIND) ("।", M2, FIND (",", M2) + 1) + 1, FIND ("।", M2, FIND ("।, M2, FIND (", ", M2) + 1) + 1) - FIND ("। ", M2, FIND (") , M2) + 1) - 1)) * 256 + INT (RIGHT (M2, LEN (M2) - FIND) ("।", M2, FIND ("", M2, FIND ("।", M2) + 1 ) + 1)))

बिल्कुल आसानी से पढ़ने योग्य सूत्र नहीं है, लेकिन आप बस अपने सेल में कॉपी कर सकते हैं और पेस्ट कर सकते हैं (अधिमानतः N2 या अपने पहले आईपी पते के समान पंक्ति में कुछ और)। यह IP पते के उचित स्वरूपण को मानता है क्योंकि सूत्र में त्रुटि सुधार इसे मानव पार्सिंग के लिए और भी बदतर बना देगा।


3

यदि आप सूत्र या VBA का उपयोग नहीं करना चाहते हैं, तो पावर क्वेरी का उपयोग करें। (एक्सेल २०१६ में, एक्सेल २०१० या २०१३ में Get & Transform, साथ में स्थापित करने के लिए PowerQuery ऐड-इन स्थापित करें)।

  1. PowerQuery संपादक में तालिका लाओ।
  2. "डुप्लीकेट कॉलम" पर राइट क्लिक करके कॉलम को डुप्लिकेट करें
  3. होम टैब पर सीमांकक द्वारा "स्प्लिट कॉलम"। "परिसीमन की प्रत्येक घटना" का चयन करें
  4. प्रत्येक स्तंभ को सॉर्ट करें। बाएं से दाएं।
  5. पहले विभाजित किए गए कॉलम का चयन करें, राइट क्लिक करें और निकालें, बंद करें और लोड करें।

3

एक सीमांकित एक लाइनर है जो ओकटेट्स को 3 अंकों के क्षेत्रों में बदल देता है जो उचित छंटाई की अनुमति देता है।

10.1.0.15बन जाता है 10001000015

=LEFT(B85, FIND(".", B85) - 1) * 1000000000
+ MID(B85, FIND("x", SUBSTITUTE(B85, ".", "x", 1)) + 1, FIND("x", SUBSTITUTE(B85, ".", "x", 2)) - FIND(".", B85) - 1) * 1000000
+ MID(B85, FIND("x", SUBSTITUTE(B85, ".", "x", 2)) + 1, FIND("x", SUBSTITUTE(B85, ".", "x", 3)) - FIND("x", SUBSTITUTE(B85, ".", "x", 2)) - 1) * 1000
+ RIGHT(B85, LEN(B85) - FIND("x", SUBSTITUTE(B85, ".", "x", 3)))

3
काम के प्रकार के लिए, आपको पहले ओकेट को अग्रणी शून्य के साथ पैड करने की भी आवश्यकता है।
ब्लैकवुड

2

जैसा कि प्रश्न में दिखाया गया है, स्तंभ एम आईपी ​​पते (आईपीवी 4) हैं, जो एम 2 से शुरू होते हैं।

सभी के जवाब से अच्छे अंक प्राप्त करके, यहाँ मेरा समाधान है। केवल 1 सहायक कॉलम की जरूरत है। हम IPv4 पतों को 012.198.043.009प्रारूपित करने की कोशिश करते हैं और फिर उन्हें क्रमबद्ध करते हैं:

  • 12.198.43.9को 12 198 43 9, फिर012.198.043.009

  1. स्वरूप IPv4 पतों में 012.198.043.009में inputting द्वारा प्रारूप एन 2 , और नीचे की तरफ भरें:

    = TEXT( LEFT(SUBSTITUTE(M2, ".", "      "), 3    ), "000") & "."
    & TEXT(  MID(SUBSTITUTE(M2, ".", "      "), 8, 5 ), "000") & "."
    & TEXT(  MID(SUBSTITUTE(M2, ".", "      "), 15, 7), "000") & "."
    & TEXT(RIGHT(SUBSTITUTE(M2, ".", "      "), 3    ), "000")
    
  2. कॉलम एन द्वारा क्रमबद्ध करें


explaination

द्वारा SUBSTITUTEडॉट ing . 6 रिक्त स्थान के साथ , हम निम्नलिखित मिल इतना है कि वे सही तरीके से निकाला जा सकता है:

                   |123456789|123546789|123456789|
1.1.1.1         ->  1      1      1      1
11.11.11.11     ->  11      11      11      11
111.111.111.111 ->  111      111      111      111
                    =1=    ==2==  ===3===
  • चरित्र 1-3 में समाहित है और केवल पहला भाग है।
  • अक्षर 8-12 में समाहित है और केवल दूसरा भाग है।
  • वर्ण 15-21 में समाहित है और केवल तीसरा भाग है।
  • सही 3 वर्णों में समाहित है और केवल चौथा भाग है।

और फिर, प्रत्येक भाग को निकालें और प्रारूपित करें TEXT(..., "000")


2

यदि आप Windows में Excel के हाल के संस्करण का उपयोग कर रहे हैं, तो आप IP पते के 32 बिट दशमलव मान की गणना करने के लिए निम्न सूत्र का उपयोग कर सकते हैं।

=SUMPRODUCT(FILTERXML("<I><o v="""&SUBSTITUTE([@ipbase],".","""/><o v=""")&"""/></I>","//o/@v"),{16777216;65536;256;1})

फिर आप व्युत्पन्न दशमलव मान का उपयोग कर सकते हैं। [@ipbase]एक मान्य IP4 पते के सेल स्थान के साथ स्थानापन्न ।

"FILTERXML" फ़ंक्शन केवल विंडोज में काम करता है, इसलिए यदि आप किसी अन्य ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं तो आप भाग्य से बाहर हैं।


0

मेरे पास एक-लाइनर भी है जो आपको अल्फा सॉर्टिंग के लिए एक गद्देदार प्रारूप आईपी (000.000.000.000) देगा।

= TEXT(MID(A1,1,FIND(".",A1)),"000") & "." &
  TEXT(MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-1-FIND(".",A1)),"000") & "." &
  TEXT(MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-1-FIND(".",A1,FIND(".",A1)+1)),"000") & "." &
  TEXT(MID(A1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)+1,LEN(A1)),"000")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.