300 Exempel

Sortera födelsedagar

Sort Birthdays

Nedan kommer vi att titta på ett program i Excel VBA den där sorterar födelsedagar till månader första och dagar andra (så vi ignorerar år). Vi vill ha födelsedagen med det lägsta månadsnumret vid första positionen. Om det finns födelsedagar med samma månadsnummer vill vi först ha födelsedagen med det lägsta dagnumret. Är du redo?





Situation:

Sortera födelsedagar Exempel





Obs! Datum är i amerikanskt format. Månader först, dagar andra. Denna typ av format beror på dina regionala inställningar för Windows.

1. Först deklarerar vi åtta variabler. En datumvariabel som vi kallar tempDate, en strängvariabel som vi kallar tempName. De andra sex variablerna är heltalsvariabler med namn monthToCheck, dayToCheck, monthNext, dayNext, i och j.



IngentempDateSom Datum, tempNameSom Sträng
IngenmonthToCheckSom Heltal, dayToCheckSom Heltal, månadNästaSom Heltal, dagNästaSom Heltal, jagSom Heltal, jSom Heltal

2. Vi startar två For Next loopar.

hur man tillämpar definierade namn på befintliga formler
Förjag = 2Till13
Förj = i + 1Till13

Exempel: för i = 2, j = 3, 4, ..., 12 och 13 kontrolleras.

3. Vi initierar fyra heltalsvariabler. Vi använder funktionen Månad för att få månaden för ett datum och funktionen Dag för att få dagen för ett datum.

monthToCheck = månad (celler (i, 2). värde)
dayToCheck = dag (celler (i, 2). värde)

monthNext = månad (celler (j, 2). värde)
dayNext = dag (celler (j, 2). värde)

Till exempel: i början, för i = 2 datumet för Bregje, och j = i + 1 = 2 + 1 = 3 kommer datumet för Niels att väljas.

4. För att sortera datumen korrekt jämför vi det första datumet (monthToCheck och dayToCheck) med nästa datum (monthNext och dayNext). Om nästa datum är 'lägre' byter vi datum och namn. Lägg till följande If Then -uttalande.

Om(månadNästaEller(monthNext = monthToCheckOchdagNästaSedan

Slutet Om

Om ovanstående påstående är sant byter vi datum och namn.

hur man gör ett stapeldiagram på Excel

Till exempel: för i = 2 och j = 3, datumet för Bregje och Niels kontrolleras. MonthNext = 6, monthToCheck = 2. Ovanstående uttalande är inte sant eftersom monthNext är högre än monthToCheck. Excel VBA ökar j med 1 och upprepar kodraderna för i = 2 och j = 4. Du kan enkelt se att Joost (j = 4) har ett högre månadstal än Bregje, så vi går till nästa. Vi får samma resultat för j = 5 och j = 6. När vi kommer fram till j = 7 har vi följande variabler: monthNext = 2 och dayNext = 9. MonthToCheck = 2 och dayToCheck = 12. Nu är ovanstående påstående sant sedan monthNext = monthToCheck och dayNext (9) är lägre än dayToCheck (12).

5. Vi byta datumen. Vi lagrar tillfälligt ett datum till tempDate, så att Excel VBA kan byta datum korrekt. Lägg till följande kodrader i if -satsen.

'byt datum
tempDate = Celler (i, 2) .Värde
Celler (i, 2) .Värde = Celler (j, 2) .Värde
Celler (j, 2) .Värde = tempDate

6. Vi gör samma sak med namnen. Lägg till följande kodrader i if -satsen.

'byt namn
tempName = Celler (i, 1) .Värde
Celler (i, 1) .Värde = Celler (j, 1) .Värde
Celler (j, 1) .Value = tempName

7. Vi stänger den andra For Next loop (Outside the If statement).

Nästaj

För i = 2 och j = 7 bytte Excel VBA datum och namn. Det betyder att vi får Richard på första positionen och Bregje på position 7. Det betyder också att vi får en ny månadToCheck och dayToCheck i början av vår nästa iteration (för i = 2 och j = 8). Vi kommer nu att jämföra Richard med Dineke (j = 8). Du kan enkelt se att det inte är nödvändigt att ersätta dessa datum och namn eftersom Richard har ett 'lägre' datum. I själva verket behöver du inte ersätta Richard (i = 2) med Jan (j = 9), Wendy (j = 10), Jeroen (j = 11), John (j = 12) och Debby (j = 13). Det beror på att Richard har det 'lägsta' datumet. På så sätt får Excel VBA (för i = 2) det 'lägsta' datumet vid den första positionen. För att få det andra 'lägsta' datumet på den andra positionen upprepar Excel VBA exakt samma steg för i = 3. För att få det tredje 'lägsta' datumet på den tredje positionen upprepar Excel VBA exakt samma steg för i = 4, etc.

8. Stäng den första For Next loop (Outside the If statement).

hur man hittar procentuell ökning av excel
Nästai

9. Testa ditt program.

Resultat:

Sortera födelsedagar i Excel VBA

8/8 klar! Läs mer om datum och tider>
Gå till nästa kapitel: evenemang



^