Software Venture Consulting

FileMaker Pro downloads & Resources
FileMaker Custom Functions
FileMaker Web Viewer Examples
FileMaker Pro & Lasso Consulting
FileMaker Books
FileMaker Articles
FileMaker Error Reference

Free Web Tools
Free FileMaker Tools

Personal Pages

Shopping Cart
Shopping Cart


Free Newsletter


Privacy Policy

FileMaker is a registered trademark of FileMaker, Inc. in the U.S. and other countries.


 FileMaker Pro Custom Functions

List  |  Show Random  |  Upload  |  Add This to Your Site

RemoveValue ( Values ; ValuesToRemove )

Rate this function:  

  Average rating: 4.6  (20 votes)
  Discuss this Custom Function

Koji Takeuchi, Freelance

Opposite version of FilterValues ().

Sample Input:
RemoveValue ( "aa¶bb¶cc¶aa¶dd" ; "aa¶dd" )
Sample Output:

 Then copy & paste into FileMaker Advanced's Edit Custom Function window.


Opposite version of FilterValues ().
theList = "aa¶bb¶cc¶aa¶dd"

RemoveValue ( theList ; "aa" )
-> "bb¶cc¶dd"
RemoveValue ( theList ; "a" )
-> "aa¶bb¶cc¶aa¶dd"
RemoveValue ( theList ; "bb¶dd" )
-> "aa¶cc¶aa"

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

This is my Custom Function and I want to edit it


5 most recent comments | Show all 14 comments

Thanks for recommendation.
It's cool shorten version, but I still like to use "step by step" style in Let() function even if it's redundant because it feels much readable for me. (but I missed the code even thogh it's "step by step" ;-)

Sorry, no offence. Thanks, again.

Koji Takeuchi, Tokyo
July 07, 2015 4:12am

I use this function today (sorry, it's first time...) and I found this is not useful!

I rewrote this function for:
- Removed unnecessary return at the end of result
- Specifying multiple values on ValuesToRemove. (So I changed parameter name "ValueToRemove" to "ValuesToRemove")

Koji Takeuchi, Tokyo
July 12, 2015 8:21am

Hi Koji: Today I just discovered the trailing return bug in my previous code. I run this function in a looping script to remove multiple values. And now see it was building unnecessary trailing ¶s. Thanks for trying to fix it.

However, you have now made this function into a different beast: a RECURSIVE FUNCTION.

The beauty of your original code was that it was NOT recursive. Recursion has a limit, and I need to process HUGE lists and don't want to have to worry about reaching a recursion limit. So, I would use this non-recursive function to remove a single value and run it in a looping script to remove multiple values.

I think you should have taken your new code and created a new custom function and named it RemoveValues and kept this one as RemoveValue to be a single-value non-recursive function.

I've revised my original code to fix the trailing paragraph bug. I'll post the code in my next comment, if anyone is interested. It goes back to removing only one value from all the list. But what's important is that the following alternate code DOES NOT USE RECURSION. Thus, you can use it in a looping script and never have to worry about reaching a recursion limit.

John Davis, Houston
July 17, 2015 7:53am

RemoveValue ( Values ; ValueToRemove )
NON-RECURSIVE, remove SINGLE-VALUE alternate code:

Let (


Substitute ( Values ; ¶ ; "¶¶" );

Substitute (
¶ & SOURCE & ¶;
¶ & TARGET & ¶;
) ;

Substitute ( REMOVED ; "¶¶" ; ¶ );

Middle ( COMPRESSED ; 2 ; Length ( COMPRESSED ) - 2 );


] ;



John Davis, Houston
July 17, 2015 7:58am

Well Koji, I've got to hand it to you. I tested your function over a list of 1 million values, and it didn't fail. Got the same number of results as my looping script with the non-recursive function. And the benchmarks were similar.

Can you enlighten me on your recursion? Is there no limit restriction on this function?

John Davis, Houston
July 17, 2015 9:45am

Make a comment about this Custom Function (please try to keep it brief & to the point). Anyone can post:

Your Name:
characters left. If you paste in more than 1500 characters, it will be truncated. Discuss the function - advertisements and other useless posts will be deleted.
Answer 5 + 3 =
Search for Custom Functions:

Custom Functions Widget
Download the Custom Function Dashboard Widget for OS X
Keep all the latest Custom Functions right at your fingertips!

Newest Custom Functions:

1. SortList ( theList )
  (Sat, Jun 23, 8:45am)
2. HexUUIDToNum_cf (_uuid)
  (Sat, Jun 16, 1:55pm)
3. httpResponseCode ( responseHeaders )
  (Tue, Jun 12, 10:40pm)
4. FindDuplicateCharacters ( string )
  (Fri, Jun 08, 5:01pm)
5. FieldRepetitionLast ( field ; maxRepetition )
  (Wed, Jun 06, 6:05pm)
6. CountModifiedRecords ( NameTimestampField ; StartTimestamp ; EndTimestamp )
  (Mon, May 28, 8:23am)
7. JSONArrayLength ( JSONArrayStr )
  (Fri, May 25, 7:46am)
8. interpolation (y1; y2; y3; x1; x2; x3; x1y1; x2y1; x1y2; x2y2; rnd)
  (Sat, May 19, 3:55am)

RSS Feed of Custom Functions