Brian Dunning's FileMaker Custom Functions

ValueMean ( ValueList )

Gives the mean / average of a value List of numbers

  Average rating: 4.7 (15 votes) Log in to vote

Bill Thurmes   Bill Thurmes
MDCA
http://www.miyotadca.com

Share on Facebook Share on Twitter

  Sample input:
Example: ValueMean ( "5¶8¶24¶3¶6" )
Example: ValueMean ( "5¶a¶24¶3¶6" )

Example: ValueMean ( "5¶-8¶24¶3¶6¶" )
  Sample output:
9.2

7.6 ('a' resolves as 0)

6 (ValueCount ignores the final ¶, and the +0 makes the Evaluate work with the trailing ¶)

  Function definition: (Copy & paste into FileMaker's Edit Custom Function window)

The native Average function in FileMaker only works on fields, but it is often more efficient to work with value lists and do all calculations in memory. This is particularly true when you use ESQL, where the answer is returned as a value list. The ValueMean function gives the mean or average of a set of numerical values in a ¶-delimited value list. One caveat: if a non-numerical value is used, it is evaluated as 0.

 

Comments

Ron Greene   Ron Greene, Phoenix, AZ
Mar 7, 2016
Why not:

Evaluate ( Substitute ( ValueList ; "¶" ; "+" ) ) / ValueCount ( ValueList )
 
Bill Thurmes   Bill Thurmes, MDCA
Mar 8, 2016
Good suggestion, and better than using a recursive custom function.

However, you have to ensure that all members of the value list are numbers; the second example (with an "a") gives "?" as an answer using your suggestion.

Evaluate ( Substitute ( Filter ( ValueList ; "0123456789-.¶" ) ; "¶" ; "+" ) ) / ValueCount ( ValueList )

should solve that.

Thanks for your suggestion!
 
Chuck Palmer   Chuck Palmer, Boulder, CO
Mar 23, 2016
I ran into the problem of the trailing "¶" being converted to a "+" and the Evaluate failed. I must be doing something different than you. So either shorten the string by one character or add a "0" to the end so the Evaluate works.
 
Bill Thurmes   Bill Thurmes, MDCA
Mar 23, 2016
Hey, Boulder, just down the road from me!

Ah, the joys of error-trapping. Here's the fix:

Changing the '+' to '+0' seems to do the trick, even with negative numbers (so the ¶-8 sequence ends up being +0-8; the leading 0 doesn't alter the value of any other number). This will work for any number of leading or trailing ¶s, but of course each additional ¶, except for the initial trailing one, means an additional value that you divide by to get the mean.

Note that ValueMean ( "" ) results in ?, because it's a divide-by-zero situation.
 
Chuck Palmer   Chuck Palmer, Boulder, CO
Mar 27, 2016
I found out that RightValues and LeftValues leave a trailing ¶ to the resulting list. That is why I had a trailing ¶. This has cause me problems in other calculations. So now I am aware of this.
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.