Esiste un equivalente della funzione EOMonth di Excel in JMP?Tutti,
Cercando di vedere c'è un equivalente della funzione EOMonth di Excel in JMP? Ho provato a riscriverlo come una funzione definita dall'utente. Mentre funziona con la maggior parte dei casi, il mio codice non riesce in alcuni casi. Cercando di vedere se esiste una funzione incorporata offerta da JMP prima di dedicare più tempo a questo?
Fonte per Screenshot: ExcelJet

Ri: Esiste un equivalente della funzione EOMonth di Excel in JMP?Ecco un'altra versione che potrebbe essere utile. Questo ha il vantaggio di essere in grado di accettare argomenti MonthToEval negativi ed evita anche di dover provare più date per vedere se la data è valida o meno.
Il mio cambiamento chiave qui è stato quello di spingere il mese in avanti di un mese in più, e utilizzare Date MDY () per ottenere il primo giorno del mese successivo, quindi sottrarre un giorno dalla risposta finale.
EOMONTH = Function( {Date, MonthToEval},
{Date, MonthToEval, EvalMonth, EvalYear, ReturnDate},
EvalMonth = Month( Date ) + MonthToEval + 1;
EvalYear = Year( Date );
While( EvalMonth > 12, EvalMonth-=12; EvalYear++; );
While( EvalMonth < 1, EvalMonth+=12; EvalYear--; );
ReturnDate = Date MDY( EvalMonth, 1, EvalYear ) - In Days( 1 );
);Ri: Esiste un equivalente della funzione EOMonth di Excel in JMP?Ecco una versione alternativa della stessa funzione. Usa un algoritmo più semplice
EOMONTH = Function( {Date, MonthToEval},
{Date, MonthToEval, EvalMonth, EvalYear, EvalDay, ReturnDate},
EvalMonth = Month( Date );
EvalYear = Year( Date );
If( EvalMonth + MonthToEval > 12,
EvalMonth = EvalMonth + MonthToEval - 12;
EvalYear = EvalYear + 1;
,
EvalMonth = EvalMonth + MonthToEval
);
EvalDay = 28;
While( Is Missing( Date MDY( EvalMonth, EvalDay, EvalYear ) ) == 0,
ReturnDate = Date MDY( EvalMonth, EvalDay, EvalYear );
EvalDay = EvalDay + 1;
);
ReturnDate;
);
mydate = Date MDY( 2, 20, 2020 );
mymonth = 0;
Show( Format( eomonth( mydate, mymonth ), "mm/dd/yyyy" ) );Ri: Esiste un equivalente della funzione EOMonth di Excel in JMP?Bene, immagino di averlo capito - ma se qualcuno ha trovato una soluzione più semplice / migliore / robusta - per favore condividi - non fa male.
IsLeapYear = function({Input_Year},{Default Local},
If(Is String(Input_Year),
Input_Year = Num(Input_Year);
);
If( (Mod(Input_Year,400) == 0 | (Mod(Input_Year,4) == 0 & Mod(Input_Year,100)!= 0)),
return(1);
,
return(0);
);
);
EOMonth = function({Start_Date,Months},{Default Local},
NewDate = Date Increment(Start_Date,"Month",Months,"start");
NewMonth = Month(NewDate);
NewDay = Day(NewDate);
NewYear = Year(NewDate);
If(Contains({1,3,5,7,8,10,12},NewMonth),
NewDay = 31;
,
If(Contains({4,6,9,11},NewMonth),
NewDay = 30;
,
If(NewMonth == 2,
If(IsLeapYear(NewYear),
NewDay = 29;
,
NewDay = 28;
);
);
);
);
// Return Result
return(Date MDY(NewMonth,NewDay,NewYear));
);
Start_Date = Date MDY(2,15,2015);
Months = -15;
Show(As Date(Start_Date));
NewDate = EOMonth(Start_Date,Months);
Show(As Date(NewDate));