मैं vba के साथ हर समय ऐसा करता हूं। मुझे पूरा यकीन है कि मैंने कार्यालय 95 के बाद से उसी विधि का उपयोग किया है, जिसमें कॉलम प्लेसमेंट के लिए किए गए मामूली बदलाव हैं। यह कम लाइनों के साथ किया जा सकता है यदि आप चर को परिभाषित नहीं करते हैं। यह तेजी से किया जा सकता है यदि आपके पास बहुत सारी लाइनें हैं या अधिक चीजों से गुजरना पड़ता है जिन्हें आपको अपने समूह को परिभाषित करने की आवश्यकता होती है।
मैं उन स्थितियों में भाग गया हूं जहां एक 'समूह' 2-5 कोशिकाओं पर आधारित है। यह उदाहरण केवल एक कॉलम को देखता है, लेकिन इसे आसानी से विस्तारित किया जा सकता है यदि कोई भी इसके साथ खेलने के लिए समय लेता है।
यह 3 कॉलम मानता है, और आपको group_values कॉलम को सॉर्ट करना होगा। इससे पहले कि आप मैक्रो को चलाएं, पहले सेल का चयन करें जिसे आप group_values कॉलम में तुलना करना चाहते हैं।
'group_values, some_number, खाली_columnToHoldSubtotals
'(सामान यहाँ जाता है)
'कुकी 1 खाली
'कुकी 3 खाली
'केक 4 खाली
'टोपी 0 खाली
'टोपी 3 खाली
'...
'रुकें
उप उप योग ()
'दो तारों को परिभाषित करें और एक उप-काउंटर काउंटर चीज़
मंद यह, कि एक स्ट्रिंग के रूप में
डबल के रूप में डिम सबकाउंट
'मूल्यों का बीजारोपण करो
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
उपसंहार = ०
'एक लूप सेटअप करें जो स्टॉप वैल्यू तक पहुंचने तक चलेगा
जबकि (ActiveCell.Value <> "स्टॉप")
'सेल वैल्यू की तुलना सेल के नीचे करता है।
अगर (ThisOne = thatOne) तब
'यदि कोशिकाएँ समान हैं, तो लाइन काउंट को उपकाउंट में जोड़ा जाता है
subCount = subCount + ActiveCell.Offset (0, 1) ।वैल्यू
अन्य
'यदि कोशिकाएँ समान नहीं हैं, तो उपकुंजी लिखी जाती है, और सबटोटल रीसेट।
ActiveCell.Offset (0, 2) ।Value = ActiveCell.Offset (0, 1) ।Value + उपकाउंट
उपसंहार = ०
अगर अंत
'अगली सेल नीचे चुनें
ActiveCell.Offset (1, 0)। चयन करें
'सक्रिय सेल के मानों और उसके नीचे वाले चर को असाइन करें
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
बीतना
अंत उप