TOP

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

विवरण

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

प्रोग्राम 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... के माध्यम से हमारा नया मैक्रो चलाएँ।

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

    विषय पर लेख:

  • Excel में तालिकों (Unpivot) का पुनरुत्पादन