array.cellValueByColNum ( array ; rowName ; column ; delimiter )
A function to return the column value from an array by specifying the row name.
Average rating: 4.4 (37 votes) Log in to vote
Tim Anderson - Show more from this author
Tim Anderson Group |
where array is
row1§40§200
row2§200§40
jelly§very wobbly§raspberry
Function definition: (Copy & paste into FileMaker's Edit Custom Function window)
Purpose:
A function to return the column value from an array by specifying the row name. Row names must be unique or only the first occurrance will be returned.
Parameters:
array
rowName
column
delimiter
Example:
array.value ( array ; "jelly" ; 2 ; "§" ) gives "very wobbly" (no quotes) where array is
row1§40§200
row2§200§40
jelly§very wobbly§raspberry
Comments
Matt Lygo, UK Oct 5, 2011 |
||
A minor change is needed on the first line of the 'code' to take into account the option to specify a delimiter: Let([_rname="¶" & rowName & "§"; should be changed to Let([_rname="¶" & rowName & delimiter; |
||
Tim Anderson, Tim Anderson Group Oct 5, 2011 |
||
Thanks for that Matt, as you will have guessed I initially used the § as a delimiter before deciding that it should be user definable | ||
Matt Lygo, UK Oct 11, 2011 |
||
One more minor change is necessary I think... Currently if the 'rowName' supplied is the first row of the array the function returns an empty result. E.G in the example above, array.value (array ; "row1"; 2; "§") gives nothing when you would expect to receive "200". The solution appears to be to either supply the array with a carriage return at the beginning, or to amend the second line of the custom function as follows: Original - _notHere=PatternCount(array;_rname)=0; Changed to - _notHere=PatternCount("¶" & array;_rname)=0; That seems to work for me, but I haven't tested thoroughly... |
||
Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.