TOP

LibreOffice calc में तालिकाओं (Unpivot) का पुनर्गठन

विवरण

कभी-कभी क्रॉस (पिवट) टेबल को फ्लैट में बदलने की आवश्यकता होती है। इस प्रक्रिया को "डेटा स्ट्रेटनिंग" (unpivo डेटा) कहा जाता है। इस तरह के "सीधेपन" के परिणामस्वरूप हमें एक तालिका मिलती है जहां सभी समान डेटा एक कॉलम में होते हैं।

प्रोग्राम LibreOffice calc में पिवट तालिकाओं को "फ्लैट" में परिवर्तित करने के लिए कोई मानक कार्यक्षमता नहीं है, लेकिन आप संबंधित प्रक्रिया स्वयं लिख सकते हैं। आइए विचार करें कि यह कैसे करना है।



आइए समस्या के सार को अधिक स्पष्ट रूप से समझने के लिए नीचे दी गई तस्वीर देखें। बाईं ओर हमारे पास मैट्रिक्स (पिवट टेबल) के रूप में एक तालिका है, और दाईं ओर - कॉलम (फ्लैट टेबल) के साथ एक नियमित तालिका:

जब आप किसी तालिका का विस्तार करते हैं, तो आप विशेषता-मूल्य जोड़ी को अनपैक करते हैं जो मैट्रिक्स तालिका में स्तंभों का प्रतिच्छेदन बिंदु होता है और उन्हें समतल तालिका में चपटे स्तंभों में पुन: उन्मुख करते हैं:

  • मान (Values) (बाईं ओर नीला) एक नए कॉलम (दाईं ओर नीला) में विस्तारित किया जाता है;
  • गुण (Attributes) (बाईं ओर हरा) को भी एक नए कॉलम (दाईं ओर हरा) में विस्तारित किया जाता है और मानों के नए कॉलम के अनुसार डुप्लिकेट किया जाता है।
  • UnPivotTable प्रक्रिया के लिए BASIC कोड

    मेनू खोलें Tools - Macros - Edit Macros..., Module1 चुनें और निम्नलिखित पाठ को मॉड्यूल में कॉपी करें:

    Sub UnPivotTable
      'moonexcel.com.ua
      Dim oBook        As Object
      Dim oActiveSheet As Object
      Dim oSelRange    As Object
      Dim oNewSheet    As Object
      
      Dim i                  As Long
      Dim iTopLabelRowCount  As Integer
      Dim iSideLabelColCount As Integer       
      
      oBook        = ThisComponent
      oActiveSheet = oBook.CurrentController.ActiveSheet
      oSelRange    = oBook.CurrentSelection
      
      'एक नई शीट जोड़ें
      oBook.Sheets.insertNewByName("UnPivoted Table",0)
      oNewSheet = oBook.Sheets(0)
      
      'हेडर का आकार निर्धारित करें
      iTopLabelRowCount  = InputBox("शीर्ष शीर्षलेख में कितनी पंक्तियाँ हैं?")
      iSideLabelColCount = InputBox("साइड हेडर में कितने कॉलम हैं?")
                
      i = 0
         
      For r = (iTopLabelRowCount + 1) To oSelRange.Rows.Count
        For c = (iSideLabelColCount + 1) To oSelRange.Columns.Count            
                           
          For j = 1 To iSideLabelColCount              
            oNewSheet.getCellByPosition(j-1, i).Formula = oSelRange.getCellByPosition(j-1, r-1).Formula               
          Next j
                 
          For k = 1 To iTopLabelRowCount
            oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, k-1).Formula
          Next k           
                             
          oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, r-1).Formula
          i = i + 1                   
                
        Next c
      Next r
    End Sub
    

    फिर, Macro Editor को बंद करें और LibreOffice calc में अपनी वर्कशीट पर वापस लौटें। शीर्ष और बाएँ शीर्षलेखों के साथ संपूर्ण तालिका का चयन करें और मेनू Tools - Macros - Run Macro... के माध्यम से हमारा नया मैक्रो चलाएँ।

    मैक्रो आपकी कार्यपुस्तिका में "अनपिवोटेड टेबल" नामक एक नई वर्कशीट सम्मिलित करेगा, और फिर नए प्रारूप में एक तालिका जोड़ेगा। ऐसी तालिका से आप LibreOffice calc में कोई भी विश्लेषण कर सकते हैं।

    विषय पर लेख:

  • Excel में तालिकाओं (Unpivot) को पुनर्व्यवस्थित करना