Mercredi, 4. Juillet 2007
On connaît tous la page d’aide du designer nommée "Working with List". On y est normalement tous passé et on en a vite fait le tour. Cette page a le mérite d’exister mais les exemples présentés ne nous aident pas des masses lorsque l’on veut faire des opérations un peu plus complexes.
J’ai donc eu l’idée de faire une page d’aide qué sapélerio Quézac…ou non plutôt « The ultimate working with list help page»
Cette page sera un aggloméré de tous les exemples glanés ici ou là de gestion des listes en @formula. Pour l’instant c’est simplement une entrés de blog mais je vais vite la mettre dans les articles une fois bien terminée. Oui, parce que j’ai pas la prétention de tout connaître et d’avoir tout vu (quoi que …quand j’y pense…
). Donc si vous avez-vous aussi de beaux exemples de formules (courtes) impliquant des listes, elles sont les bien venues.
The ultimate working with list help page
DIFFERENCE :
All unique entries in list 1 but not in list2
list1:="......";
list2:=".....";
reslist:=@unique(@trim(@replace(list1;list2;"")));
AND :
All unique entries in both list 1 and list2
list1:="......";
list2:=".....";
list3:=@replace(list1;list2;"");
resList:=@unique(@trim(@replace(list1;list3;"")));
OR (SUM):
All unique entries in either list1 or list2
resList:=@trim(@unique(List1:List2));
XOR :
All unique entries in list 1 or list2 but not in both
list1:="......";
list2:=".....";
list3:=@replace(list1;list2;"");
list4:=@replace(list2;list1;"");
resList:=@unique(@trim(list3:list4));
All numbers within a given range
list:=1:2:3:4:5:1:2:3:4:5:1:2:3:4:5;
lower:=2;
upper:=4;
p0:=@text(list);
p3:=@Trim(@Replace(p0;@Replace(p0;@Right(@Text(List-lower);"-")+p0;"");""));
res:=@texttonumber(@Trim(@Replace(p3;@Replace(p3;@Right(@Text(upper-@texttonumber(p3));"-")+p3;"");""
How many dates in a list are less than a given date ?
rem "subtract list from date to get list of +ve & -ve nos";
p1:=@Text(Date-DateList);
rem "change all entries which are -ve";
p2:=@Explode(@ReplaceSubstring(@Implode(p1;"/");"-";"*");"/");
rem "now replace unchanged entries from orig list";
p3:=@TextToTime(@Trim(@Replace(@Replace(p2;p1;@Text(DateList));p2;"")));
@elements(p3)
Extract the dates upper than a specific date within a date list
orig := [12/12/2007]:[25/07/2009]:[01/01/2007] ;
dateLimit := [04/07/2007];
secs:= @Text(orig-dateLimit ); after:= @Replace(secs; "-"+@Trim(@Right(secs;"-")); "");
tmpResult:= @Trim(@Replace(after; secs; @Text(orig)));
result := @TextToTime(tmpResult);
Extract dates corresponding to a specifics weekdays within a date range
Weekday := "2" : "3";
StartDate := [01/04/2002];
EndDate := [10/04/2002];
R := @TextToTime(@Explode(@TextToTime(@Text(StartDate) + " - " + @Text(EndDate))));
D := @Replace(@Text(@Weekday(R)); Weekday; "X" + Weekday);
W := @Trim(@Right(@Left(@Explode("<" + @Implode(D + "=" + @Text(R); "<") + "<"; "X"); "<"); "="));
@Prompt([OK]; "Test"; @Implode(W; "; "))
Calculate the number of weekdays between two date fields
diffDays := (EndDate - StartDate) / 86400 + 1;
strtDay := @Modulo(@Weekday(StartDate); 7);
endDay := @Modulo(@Weekday(EndDate); 7);
result := (diffDays - endDay + strtDay - 8) * 5 / 7 - @Max(-2; -strtDay) - @Min(1; endDay) + 5 - strtDay + endDay
J’ai donc eu l’idée de faire une page d’aide qué sapélerio Quézac…ou non plutôt « The ultimate working with list help page»
Cette page sera un aggloméré de tous les exemples glanés ici ou là de gestion des listes en @formula. Pour l’instant c’est simplement une entrés de blog mais je vais vite la mettre dans les articles une fois bien terminée. Oui, parce que j’ai pas la prétention de tout connaître et d’avoir tout vu (quoi que …quand j’y pense…
). Donc si vous avez-vous aussi de beaux exemples de formules (courtes) impliquant des listes, elles sont les bien venues.The ultimate working with list help page
DIFFERENCE :
All unique entries in list 1 but not in list2
list1:="......";
list2:=".....";
reslist:=@unique(@trim(@replace(list1;list2;"")));
AND :
All unique entries in both list 1 and list2
list1:="......";
list2:=".....";
list3:=@replace(list1;list2;"");
resList:=@unique(@trim(@replace(list1;list3;"")));
OR (SUM):
All unique entries in either list1 or list2
resList:=@trim(@unique(List1:List2));
XOR :
All unique entries in list 1 or list2 but not in both
list1:="......";
list2:=".....";
list3:=@replace(list1;list2;"");
list4:=@replace(list2;list1;"");
resList:=@unique(@trim(list3:list4));
All numbers within a given range
list:=1:2:3:4:5:1:2:3:4:5:1:2:3:4:5;
lower:=2;
upper:=4;
p0:=@text(list);
p3:=@Trim(@Replace(p0;@Replace(p0;@Right(@Text(List-lower);"-")+p0;"");""));
res:=@texttonumber(@Trim(@Replace(p3;@Replace(p3;@Right(@Text(upper-@texttonumber(p3));"-")+p3;"");""
How many dates in a list are less than a given date ?
rem "subtract list from date to get list of +ve & -ve nos";
p1:=@Text(Date-DateList);
rem "change all entries which are -ve";
p2:=@Explode(@ReplaceSubstring(@Implode(p1;"/");"-";"*");"/");
rem "now replace unchanged entries from orig list";
p3:=@TextToTime(@Trim(@Replace(@Replace(p2;p1;@Text(DateList));p2;"")));
@elements(p3)
Extract the dates upper than a specific date within a date list
orig := [12/12/2007]:[25/07/2009]:[01/01/2007] ;
dateLimit := [04/07/2007];
secs:= @Text(orig-dateLimit ); after:= @Replace(secs; "-"+@Trim(@Right(secs;"-")); "");
tmpResult:= @Trim(@Replace(after; secs; @Text(orig)));
result := @TextToTime(tmpResult);
Extract dates corresponding to a specifics weekdays within a date range
Weekday := "2" : "3";
StartDate := [01/04/2002];
EndDate := [10/04/2002];
R := @TextToTime(@Explode(@TextToTime(@Text(StartDate) + " - " + @Text(EndDate))));
D := @Replace(@Text(@Weekday(R)); Weekday; "X" + Weekday);
W := @Trim(@Right(@Left(@Explode("<" + @Implode(D + "=" + @Text(R); "<") + "<"; "X"); "<"); "="));
@Prompt([OK]; "Test"; @Implode(W; "; "))
Calculate the number of weekdays between two date fields
diffDays := (EndDate - StartDate) / 86400 + 1;
strtDay := @Modulo(@Weekday(StartDate); 7);
endDay := @Modulo(@Weekday(EndDate); 7);
result := (diffDays - endDay + strtDay - 8) * 5 / 7 - @Max(-2; -strtDay) - @Min(1; endDay) + 5 - strtDay + endDay
1. Michael
18/01/2008 11:32:31
Pour générer la liste des Dates entre 2 dates
@Explode(@TextToTime("["+@Text(ChampDate1)+"-"+@Text(ChampDate)+"]"))




- 









