"स्प्लिट" सीमांकित स्ट्रिंग, रिक्त प्रविष्टियों को संरक्षित करना


10

मैं कुछ डेटा में हेरफेर करने के लिए Google शीट्स (नए संस्करण) में कार्यों SPLITऔर JOINकार्यों का उपयोग करने की कोशिश कर रहा हूं , और मैं समस्याओं में भाग रहा हूं क्योंकि SPLITरिक्त प्रविष्टियों को संरक्षित नहीं कर रहा हूं ।

डेटा स्रोत इस तरह स्थापित किया गया है, अनिवार्य रूप से:

   |  A    B    C    D
-----------------------
1  |  q    5    r    2
2  |  s         t    4
3  |  u    8    v
4  |  w    3    x    6

(इस डेटा सेट में रिक्त प्रविष्टियाँ "कोई माप नहीं" का प्रतिनिधित्व करती हैं, जो एक माप से अलग है 0)

स्तंभों पर Aऔर C, मुझे सूत्र का उपयोग करके जो परिणाम चाहिए वह मुझे मिल रहा है:

=SPLIT(JOIN("~",A1:A4,C1:C4),"~")

यह एक पंक्ति का उत्पादन करता है, जो अपेक्षित है q s u w r t v x, प्रत्येक अपने स्वयं के सेल में।

हालाँकि, यह विधि स्तंभों पर काम नहीं करती है Bऔर DJOINआउटपुट के अनुसार, अपेक्षित कार्य:

5~~8~3~2~4~~6

प्रदर्शन SPLITहै कि उत्पादन पर, तथापि, एक समस्या में परिणाम: मैं के साथ छोड़ दिया हूँ 5 8 3 2 4 6, के बीच रिक्त कक्षों के बिना 5और 8या के बीच 4और 6, जिसका अर्थ है जोड़े टूट रहे हैं (उदाहरण के लिए sऔर vकोशिकाओं को खाली करने के अनुरूप होना चाहिए, लेकिन इसके बजाय wऔर xकरते हैं)। समस्या यह है कि उनके बीच एक अशक्त प्रविष्टि के साथ दो सीमांकक के बजाय एक एकल सीमांकक के रूप SPLITमें व्याख्या ~~कर रहा है।

क्या किसी को पता है कि इस तरह के परिदृश्य में रिक्त प्रविष्टियों को कैसे संरक्षित किया जाए?

वांछित आउटपुट इस तरह दिखेगा

q  s  u  w  r  t  v  x
5     8  3  2  4     6

क्या उन खाली क्षेत्रों में एक स्थान समस्या को ठीक करेगा?
एले

टाइपिंग "" से रिक्त प्रविष्टि संरक्षित होती है (धन्यवाद, @AlE!) त्रुटि प्रवण।
लिबरल आर्टिस्ट

स्प्रैडशीट फ़ार्मुले मेरे लिए नहीं हैं। शायद IF()रिक्त स्थानों पर ऑटो-कन्वर्ट खाली क्षेत्रों के साथ कुछ किया जा सकता है ।
ऐले

1
अद्यतन: @ AlE. के विचार ने मुझे रिक्त पदों =ARRAYFORMULA(IF(ISBLANK(B1:B4)," ",B1:B4))में स्तंभों के डमी सेट बनाने के लिए तत्काल शब्द में संगणना प्राप्त करने दी , जिसका उपयोग तब SPLITऔर के लिए किया जाता है JOIN। फिर भी किसी के अधिक सुरुचिपूर्ण समाधान की उम्मीद करना, हालांकि: यह मेरे दस्तावेज़ में अतिरिक्त सामान का एक गुच्छा जोड़ता है, और यह अभी भी मुझे कुछ अलग-अलग स्थानों में पंक्ति संख्याओं को अपडेट करने की आवश्यकता है क्योंकि डेटा सेट में अधिक माप जोड़े जाते हैं। (कम से कम मुझे अब के लिए डेटा को क्रंच करने के लिए एआई ई के लिए धन्यवाद!)
लिबरल आर्टिस्ट

जवाबों:


3

निम्नलिखित समाधान का प्रयास करें।

सूत्र

=ARRAYFORMULA(TRIM(SPLIT(JOIN(" ,", A1:A4,C1:C4), ",")))

व्याख्या की

आपने पहले ही हमें दिखा दिया कि SPLITफ़ंक्शन रिक्त कोशिकाओं की उपेक्षा करता है, इसलिए मैं इस स्ट्रिंग को सीमांकक के रूप में चुनता हूं " ,":। JOINफ़ंक्शन का मध्यवर्ती परिणाम इस तरह दिखता है:
यहाँ छवि विवरण दर्ज करें

मैं के लिए सीमांकक चयन SPLITसमारोह इस होना करने के लिए: ","SPLITफ़ंक्शन का मध्यवर्ती परिणाम इस तरह दिखता है:
यहाँ छवि विवरण दर्ज करें

अब, हालांकि, हमें अतिरिक्त अतिरिक्त सफेद स्थानों से निपटना होगा। इसलिए मैंने TRIMफ़ंक्शन का उपयोग किया , सभी अनुगामी या प्रमुख सफेद रिक्त स्थान को हटाने के लिए (संयोजन में ARRAYFORMULA)। LENप्रत्येक मध्यवर्ती परिणाम के मूल्यों की तुलना करें ।

परिणाम

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

उदाहरण

मैंने आपके लिए एक उदाहरण फ़ाइल बनाई है: रिक्त कोशिकाओं को संरक्षित करने के लिए SPLIT


2

निम्नलिखित समाधान का प्रयास करें।

कोड

function myJoin() { 
  var output = []; 
  for(var i = 0, iLen = arguments.length; i < iLen; i++) {
    for(var r = 0, rLen = arguments[i].length; r < rLen; r++) {
      output.push(arguments[i][r][0]);
    }    
  }
  return [output];
}

प्रयोग

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

फ़ंक्शन के लिए जितनी चाहें उतनी रेंज जोड़ें और उन्हें संसाधित किया जाएगा। अपनी स्प्रेडशीट के स्क्रिप्ट संपादक में इस छोटी सी स्क्रिप्ट को जोड़ें (टूल> स्क्रिप्ट एडिटर; प्रेस सेव बटन)।

उदाहरण

मैंने आपके लिए एक उदाहरण फ़ाइल बनाई है: रिक्त कोशिकाओं को संरक्षित करने के लिए SPLIT


2

संक्षिप्त जवाब

निम्न सूत्र वांछित परिणाम देता है।

=Transpose({A1:B4;C1:D4})

विस्तारित उत्तर

यह जवाब काम करने के लिए चुने हुए दृष्टिकोण को बनाने के बारे में चर्चा करने के बजाय वांछित परिणाम प्राप्त करने का एक तरीका प्रदान करने में केंद्रित है।

XY समस्या

ओपी एक्स को प्राप्त करना चाहता है और सोचता है कि वाई को उस परिणाम को वापस करना चाहिए। यह दृष्टिकोण समस्याग्रस्त है क्योंकि Y में कुछ कैविटीज हैं। यह एक महापौर समस्या हो सकती है क्योंकि ओपी एक्स को प्राप्त करने के तरीके के बजाय वाई को काम करने के तरीके के बारे में पूछता है लेकिन यह इतना बड़ा नहीं है क्योंकि यह संदर्भ और वांछित परिणाम प्रदान करता है।

समाधान

Google शीट्स अंतिम उपयोगकर्ताओं के दृष्टिकोण से बहुत सरल तरीके से बहु-मूल्य परिणामों को संभालने में सक्षम है। दूसरी ओर, यह अंत उपयोगकर्ताओं को सरणियों को परिभाषित करने की अनुमति देने के लिए एक विशेष अंकन का उपयोग करने की अनुमति देता है।

उपरोक्त विशेषताएं SPLIT () और JOIN () फ़ंक्शन के उपयोग के बिना अपेक्षित परिणाम प्राप्त करने के लिए संभव बनाती हैं और उनके बिना निहित सीवेज के बिना।

सूत्र व्याख्या

{A1:B4;C1:D4}

यह एक 2 X 8 सरणी है जो दो 2 X 4 सरणियों / श्रेणियों द्वारा बनाई गई है। अर्धविराम ( ;) का उपयोग यह मानकर किया जाता है कि स्प्रेडशीट का दशमलव विभाजक एक डॉट ( .) है। यदि दशमलव विभाजक अल्पविराम था, तो इसे बैकस्लैश ( \) द्वारा प्रतिस्थापित करें ।

=Transpose({A1:B4;C1:D4})

2 X 8 सरणी को 8 X 2 सरणी में परिवर्तित करता है।

इस विधि के फायदों में से एक यह है कि इसे खाली कोशिकाओं के विशेष हैंडलिंग की आवश्यकता नहीं होती है। अन्य लाभ यह है कि यह एक बहुत ही कॉम्पैक्ट सूत्र है और इसे अनुकूलित करना बहुत आसान है।

संदर्भ


1

यदि आप शामिल होते हैं और सीमांकक होने के लिए "," मूल रूप से एक पूर्ववर्ती स्थान के साथ एक अल्पविराम है यह स्वचालित रूप से उस स्थान को संरक्षित करेगा जब आप इसे फिर से विभाजित करते हैं:

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