מיין ימי הולדת ב- Excel VBA - פקודות מאקרו קלות של Excel

תוכן העניינים

להלן נבחן תוכנית ב Excel VBA זֶה ממיין ימי הולדת לחודשים הראשונים לימים השניים (כך שאנו מתעלמים משנים). אנו רוצים את יום ההולדת עם מספר החודש הנמוך ביותר במיקום הראשון. אם יש ימי הולדת עם מספר חודשים שווה, אנחנו רוצים קודם כל את יום ההולדת עם מספר היום הנמוך ביותר. האם אתה מוכן?

מַצָב:

הערה: התאריכים הם בפורמט ארה"ב. חודשים ראשונים, ימים שניים. פורמט מסוג זה תלוי בהגדרות האזוריות של חלונות.

1. ראשית, אנו מצהירים על שמונה משתנים. משתנה תאריך אחד שאנו קוראים לו tempDate, משתנה מחרוזת אחד שאנו קוראים לו tempName. ששת המשתנים האחרים הם משתנים שלמים עם שמות monthToCheck, dayToCheck, monthNext, dayNext, i ו- j.

תאריך תאריך תאריך, תאריך זמני כמחרוזת
Dim monthToCheck As Integer, dayToCheck As Integer, monthHext As Integer, dayNext As Integer, i As Integer, j As Integer

2. אנו מתחילים שתי לולאות For Next.

עבור i = 2 עד 13
עבור j = i + 1 עד 13

דוגמה: עבור i = 2, j = 3, 4,…, 12 ו -13 נבדקים.

3. אנו מאתחלים ארבעה משתנים שלמים. אנו משתמשים בפונקציית חודש כדי לקבל את חודש התאריך ואת הפונקציה Day כדי לקבל את היום של תאריך.

monthToCheck = חודש (תאים (i, 2). ערך)
dayToCheck = day (תאים (i, 2). ערך)
monthNext = חודש (תאים (j, 2). ערך)
dayNext = day (תאים (j, 2). ערך)

לדוגמה: בהתחלה, עבור i = 2; התאריך של Bregje, ו- j = i + 1 = 2 + 1 = 3; התאריך של נילס ייבחר.

4. כדי למיין את התאריכים כראוי, אנו משווים את התאריך הראשון (monthToCheck ו- dayToCheck) עם התאריך הבא (monthNext ו- dayNext). אם התאריך הבא הוא 'נמוך יותר', נחליף את התאריכים והשמות. הוסף את המשפט If Then הבא.

אם (monthNext <monthToCheck) או (monthNext = monthToCheck ו- dayNext <dayToCheck) לאחר מכן
סוף אם

אם המשפט הנ"ל נכון, אנו מחליפים את התאריכים והשמות.

לדוגמה: עבור i = 2 ו- j = 3, התאריך של ברג'ה ונילס נבדק. MonthNext = 6, monthToCheck = 2. המשפט לעיל אינו נכון שכן monthNext גבוה יותר מאשר monthToCheck. Excel VBA מגדיל את j ב- 1 וחוזר על שורות הקוד עבור i = 2 ו- j = 4. אתה יכול בקלות לראות של- Joost (j = 4) יש מספר חודש גבוה יותר מאשר Bregje, אז אנחנו עוברים לשלב הבא. אנו מקבלים את אותה התוצאה עבור j = 5 ו- j = 6. כאשר אנו מגיעים ל- j = 7, יש לנו את המשתנים הבאים: monthNext = 2 ו- dayNext = 9. MonthToCheck = 2 ו- dayToCheck = 12. כעת המשפט הנ"ל נכון מאז monthNext = monthToCheck ו- dayNext (9) נמוך יותר מאשר dayToCheck (12).

5. אנו מחליפים את התאריכים. אנו שומרים באופן זמני תאריך אחד ל- tempDate, כך ש- Excel VBA יכול להחליף את התאריכים כראוי. הוסף את שורות הקוד הבאות במשפט If.

'החלף תאריכים
tempDate = תאים (i, 2). ערך
תאים (i, 2). ערך = תאים (j, 2). ערך
תאים (j, 2) .Value = tempDate

6. אנחנו עושים אותו דבר עם השמות. הוסף את שורות הקוד הבאות במשפט If.

'החלף שמות
tempName = תאים (i, 1). ערך
תאים (i, 1). ערך = תאים (j, 1). ערך
תאים (j, 1) .Value = tempName

7. אנו סוגרים את הלולאה השנייה של For Next (מחוץ למשפט If).

י הבא

עבור i = 2 ו- j = 7, Excel VBA החליף את התאריכים והשמות. זה אומר שאנו מקבלים את ריצ'רד בעמדה הראשונה ואת ברג'ה בעמדה 7. זה גם אומר שאנחנו מקבלים חודש חדש Tocheck ו- dayToCheck בתחילת האיטרציה הבאה שלנו (עבור i = 2 ו- j = 8). כעת נשווה את ריצ'רד לדיינקה (j = 8). אתה יכול בקלות לראות שאין צורך להחליף את התאריכים והשמות האלה מכיוון שלריצ'רד יש תאריך 'נמוך' יותר. למעשה, אין צורך להחליף את ריצ'רד (i = 2) ביאן (j = 9), ונדי (j = 10), Jeroen (j = 11), ג'ון (j = 12) ודבי (j = 13). הסיבה לכך היא שלריצ'רד יש את התאריך ה'נמוך ביותר '. בדרך זו Excel VBA יקבל (עבור i = 2) את התאריך 'הנמוך ביותר' במיקום הראשון. כדי לקבל את התאריך ה'נמוך ביותר 'במיקום השני, Excel VBA חוזר על אותם שלבים בדיוק עבור i = 3. כדי לקבל את התאריך השלישי' הנמוך ביותר 'במיקום השלישי, Excel VBA חוזר על אותם השלבים בדיוק עבור i = 4, וכו '

8. סגור את הלולאה הראשונה ל- Next (מחוץ למשפט If).

הבא i

9. בדוק את התוכנית שלך.

תוֹצָאָה:

תוכל לעזור בפיתוח האתר, שיתוף הדף עם החברים שלך

wave wave wave wave wave