Bruce Robertson has a helpful custom function AntiFilterValues().
This calc might get you part of the way (there will be issues if field 2 has words that are also in the version, or if there's pilcrows in either field).
f1 = table::field1 ;
f2 = table::field2 ;
f1a = Substitute ( f1 ; " " ; ¶ ) ;
f2a = Substitute ( f2 ; " " ; ¶ ) ;
vals = AntiFilterValues ( f1a ; f2a ) ;
result = Substitute ( vals ; " " ; ¶ ) ;
That's perfect thanks David (and thanks of course to Bruce for his cusom function)
I only needed to tweak the source fields using validation to ensure syntax control and convention and it should all be transparent now. The problem originated because their FileMaker database stored a course that can run multiple versions and it is upon enrolment of a participant that the version is selected whereas the web developer has broken a course that runs multiple versions into separate courses.
I'm a happy little vegemite as is my client.