/ / एक्सेल वीबीए में जन्मदिन क्रमबद्ध करें

एक्सेल वीबीए में जन्मदिन क्रमबद्ध करें

नीचे हम एक कार्यक्रम देखेंगे एक्सेल VBA उस जन्मदिन की तरह महीनों पहले और दिन दूसरे (इसलिए हम अनदेखा करते हैंवर्षों)। हम जन्मदिन को सबसे पहले महीने के साथ पहली स्थिति में चाहते हैं। यदि समान महीनों के साथ जन्मदिन हैं, तो हम पहले जन्मदिन के साथ जन्मदिन चाहते हैं। तुम तैयार हो?

परिस्थिति:

जन्मदिन उदाहरण सॉर्ट करें

नोट: दिनांक अमेरिकी प्रारूप में हैं। महीने पहले, दिन दूसरे। इस प्रकार का प्रारूप आपकी विंडोज़ क्षेत्रीय सेटिंग्स पर निर्भर करता है।

1. सबसे पहले, हम आठ चर घोषित करते हैं। एक तिथि परिवर्तक जिसे हम tempDate कहते हैं, एक स्ट्रिंग वेरिएबल जिसे हम tempName कहते हैं। अन्य छः चर नाम नाम महीनों के साथ इंटीजर वैरिएबल हैं, चेक, डेको चेक, महीना अगला, दिन अगला, मैं और जे।

Dim tempDate As Date, tempName As String
Dim monthToCheck As Integer, dayToCheck As Integer, monthNext As Integer, dayNext As Integer, i As Integer, j As Integer

2. हम अगली लूप के लिए दो शुरू करते हैं।

For i = 2 To 13
    For j = i + 1 To 13

उदाहरण: i = 2, j = 3, 4, ..., 12 और 13 के लिए चेक किया गया है।

3. हम चार इंटीजर चर शुरू करते हैं। हम तिथि का दिन प्राप्त करने के लिए तिथि और दिन का कार्य प्राप्त करने के लिए माह फ़ंक्शन का उपयोग करते हैं।

monthToCheck = month(Cells(i, 2).Value)
dayToCheck = day(Cells(i, 2).Value)

monthNext = month(Cells(j, 2).Value)
dayNext = day(Cells(j, 2).Value)

उदाहरण के लिए: शुरुआत में, i = 2 के लिए; ब्रेगे की तारीख, और जे = i + 1 = 2 + 1 = 3; नील्स की तारीख का चयन किया जाएगा।

4। तारीखों को सही तरीके से क्रमबद्ध करने के लिए, हम अगली तारीख (महीना अगला और दिन अगला) के साथ पहली तारीख (महीना टॉक और डे टॉक चेक) की तुलना करें। यदि अगली तारीख "निचली" है, तो हम तिथियों और नामों को स्वैप करते हैं। यदि अगला कथन है तो निम्नलिखित जोड़ें।

If (monthNext < monthToCheck) Or (monthNext = monthToCheck And dayNext < dayToCheck) Then

End If

यदि उपर्युक्त कथन सत्य है, तो हम तिथियों और नामों को स्वैप करते हैं।

उदाहरण के लिए: i = 2 और j = 3 के लिए, ब्रेगे और नील्स की तारीख की जांच की जाती है। MonthNext = 6, monthToCheck = 2. उपर्युक्त कथन महीने के बाद से सत्य नहीं है अगला चेक महीने से अधिक है। चेक। एक्सेल वीबीए 1 से जे बढ़ाता है और i = 2 और j = 4 के लिए कोड लाइन दोहराता है। आप आसानी से देख सकते हैं कि जोओस्ट (जे = 4) में ब्रेगेजे की तुलना में उच्च महीना संख्या है, इसलिए हम अगले पर जाते हैं। हम j = 5 और j = 6 के लिए एक ही परिणाम प्राप्त करते हैं। जब हम j = 7 पर पहुंचते हैं, तो हमारे पास निम्न चर होते हैं: monthNext = 2 और dayNext = 9. MonthToCheck = 2 और dayToCheck = 12. अब उपरोक्त कथन सत्य है महीने से अगला = महीना टच चेक और दिन अगला (9) दिन से कम है चेक (12)।

5. हम तिथियों को स्वैप करते हैं। हम अस्थायी रूप से एक तारीख को tempDate में संग्रहीत करते हैं, ताकि एक्सेल वीबीए तिथियों को सही ढंग से स्वैप कर सके। अगर कथन में निम्नलिखित कोड लाइनें जोड़ें।

"swap dates
tempDate = Cells(i, 2).Value
Cells(i, 2).Value = Cells(j, 2).Value
Cells(j, 2).Value = tempDate

6. हम नामों के साथ समान करते हैं। अगर कथन में निम्नलिखित कोड लाइनें जोड़ें।

"swap names
tempName = Cells(i, 1).Value
Cells(i, 1).Value = Cells(j, 1).Value
Cells(j, 1).Value = tempName

7. हम दूसरे फॉर नेक्स्ट लूप (अगर कथन के बाहर) को बंद करते हैं।

Next j

I = 2 और j = 7 के लिए, एक्सेल वीबीए ने तिथियों को बदल दियाऔर नाम। इसका मतलब है कि हम रिचर्ड को पहली स्थिति में और ब्रेगे को 7 वें स्थान पर प्राप्त करते हैं। इसका मतलब यह भी है कि हमें अगले महीने की शुरुआत में (i = 2 और j = 8) की शुरुआत में एक नया महीना टॉचैक और डे टॉक चेक प्राप्त करें। अब हम रिचर्ड की तुलना डेनके (जे = 8) से करेंगे। आप आसानी से देख सकते हैं कि उन तिथियों और नामों को प्रतिस्थापित करने की कोई आवश्यकता नहीं है क्योंकि रिचर्ड की "कम" तिथि है। वास्तव में, रिचर्ड (i = 2) को जनवरी (जे = 9), वेंडी (जे = 10), जेरोन (जे = 11), जॉन (जे = 12) और डेबी (जे) के साथ बदलने की कोई आवश्यकता नहीं है = 13)। ऐसा इसलिए है क्योंकि रिचर्ड की "सबसे कम" तारीख है। इस तरह एक्सेल वीबीए (i = 2 के लिए) पहली स्थिति में "सबसे कम" दिनांक प्राप्त करेगा। दूसरी स्थिति में दूसरी "निम्नतम" तिथि प्राप्त करने के लिए, एक्सेल वीबीए i = 3. के लिए सटीक एक ही चरण को दोहराता है। तीसरी स्थिति में तीसरी "सबसे कम" तारीख प्राप्त करने के लिए, एक्सेल वीबीए i = 4 के लिए सटीक एक ही चरण को दोहराता है, आदि।

8. अगला लूप के लिए पहले बंद करें (अगर कथन के बाहर)।

Next i

9. अपने कार्यक्रम का परीक्षण करें।

परिणाम:

एक्सेल वीबीए में जन्मदिन क्रमबद्ध करें

यह भी पढ़ें: