एक्सेल: रिकॉर्ड संरचना को टेबल / क्रोस्टैब में दोहराने के नाम-मूल्य सूची को कैसे परिवर्तित किया जाए?


2

'कॉलम टू टेक्स्ट' और पिवट टेबल समाधान नहीं हैं!

स्रोत डेटा

myval: value1
mydate: 11:11:2001
myname: bob diamond
mynum: 5648
endmarker
myval: value2
mydate: 10:10:2008
myname: jimmy knapp
mynum: 6661
endmarker

में

myval            mydate           myname            mynum
value 1          11:11:2001       bob diamond       5648
value 2          10:10:2008       jimmy knapp       6661

पहला भाग ठीक है, जहाँ सीमांकक भी तिथि में है और इसके द्वारा प्राप्त किया जा सकता है:

 =IFERROR(LEFT(A1,FIND(":",A1,1)-1),"")     
 =IFERROR(RIGHT(A1,LEN(A1)-FIND(":",A1,1)),"")

जो केवल पहले सीमांकक पर विभाजित होता है

"सूची से तालिका" या "क्रॉसस्टैब की सूची" के लिए Google नाराज रूप से बिल्कुल विपरीत परिणाम देता है

संपादित करें : प्रत्येक रिकॉर्ड में लगभग 200 फ़ील्ड होते हैं, मान हमेशा एक ही क्रम में दिखाई देते हैं लेकिन उनमें से कुछ हमेशा मौजूद नहीं होते हैं जिसका अर्थ है कि इसे सीधे OFFSET कमांड जैसी किसी चीज़ से हल नहीं किया जा सकता है जो अन्यथा काम करेगा


आपके पास फ़ील्ड नाम हैं जिन्हें आप मानों की पहचान करने के लिए उपयोग कर सकते हैं, लेकिन क्या प्रत्येक अनुक्रम समान है (समान क्रम में सभी समान फ़ील्ड), इसलिए आप प्रत्येक कॉलम में जाने वाले मानों को डिकोड करने के बजाय विश्वसनीय पंक्ति संख्या का उपयोग कर सकते हैं? क्या वे वास्तविक क्षेत्र के नाम या उदाहरण के लिए सिर्फ प्लेसहोल्डर हैं? क्या वास्तविक डेटा सिर्फ चार कॉलम है? सरल समाधान: प्रत्येक गंतव्य स्तंभ में मान के लिए: उस मान के लिए प्रारंभिक चरित्र के साथ MID () फ़ंक्शन का उपयोग करें और उचित स्रोत पंक्ति की संख्यात्मक रूप से गणना करें।
फिक्सर 1234

फ़ील्ड के नाम उसी क्रम में हैं, लेकिन जैसा कि मैंने अब महसूस किया है कि OFFSET के साथ इसे हल करने की कोशिश करने के बाद, कुछ रिकॉर्डों में सभी फ़ील्ड शामिल नहीं हैं और लगभग 200 फ़ील्ड हैं। मैं इस को दर्शाने के लिए Q को एडिट करूँगा
एडोल्फ लहसुन

तो आप जो आउटपुट चाहते हैं उसमें लगभग 200 कॉलम होंगे?
फिक्सर 1234

हाँ जिसका मतलब है कि MSWord में टेबल चीज़ की सूची या तो काम नहीं करेगी
एडोल्फ लहसुन

एक दृष्टिकोण - 3 सहायक कॉलम बनाएं: फ़ील्ड नाम और मान को पार्स करें और एंडमार्क (आधारित गंतव्य / पंक्ति संख्या से मिलान करने के लिए) के आधार पर एक रिकॉर्ड संख्या जोड़ें। प्रत्येक स्तंभ में मान के लिए, मिलान रिकॉर्ड संख्या के भीतर सहायक स्तंभ सरणी में स्तंभ शीर्षक की खोज करें। एक और दृष्टिकोण: एक्सेस का उपयोग करें।
फिक्सर 1234

जवाबों:


1

मान लें कि आपका स्रोत डेटा शीट 1 के कॉलम A में है :

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

सबसे पहले कॉलम हेडर को शीट 2 में रखें

फिर इस लघु मैक्रो को चलाएं:

Sub DataReOrganizer()
   Dim s1 As Worksheet, s2 As Worksheet
   Dim N As Long, i As Long, K As Long, v As String
   Set s1 = Sheets("Sheet1")
   Set s2 = Sheets("Sheet2")
   N = s1.Cells(Rows.Count, "A").End(xlUp).Row
   K = 2

   For i = 1 To N
      v = s1.Cells(i, "A").Text
      If v = "endmarker" Then
         K = K + 1
      Else
         ary = Split(v, ": ")
         MsgBox ary(1)
         If ary(0) = "myval" Then s2.Cells(K, 1) = ary(1)
         If ary(0) = "mydate" Then s2.Cells(K, 2) = Chr(39) & ary(1)
         If ary(0) = "myname" Then s2.Cells(K, 3) = ary(1)
         If ary(0) = "mynum" Then s2.Cells(K, 4) = ary(1)
      End If
   Next i
End Sub

शीट 2 में इसका उत्पादन करने के लिए :

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

Chr (39) अपने दिनांक स्वरूप को बनाए रखने और एक समय में इसमें बदलाव करने से एक्सेल को रोकने के लिए प्रयोग किया जाता है।


यह काम करता हैं! लेकिन कुछ अतिरिक्त गोत्र विषम छिपे हुए पात्रों के रूप में पाए जाने थे। एक बार हटा दिया गया और स्क्रिप्ट में संशोधन (एक्सेल का उपयोग करके) अन्य 196 विषम कॉलम बनाने के लिए यह ठीक चला। धन्यवाद
एडॉल्फ लहसुन

यह सवाल का जवाब देता है, लेकिन मुझे अब पता चला है कि खेतों में से एक बहुस्तरीय है और केवल पहली पंक्ति में पहचानकर्ता है जिसे मुझे कोशिश करना और पकड़ना होगा। मैं वापस पोस्ट करूँगा अगर और जब मैं समाधान का पता लगाता हूँ (इसे नहीं संभालना उक्त फ़ील्ड के 2 से n के परिणामस्वरूप डंप किया जाता है)
एडोल्फ लहसुन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.