First, for proper relational design, you should (or could) be using a small "join" table, to store the assignments of committees to people. The "flat" structure of "field 1, field 2, field 3" is (very) awkward to work with. Doing a Find on 3 fields is kind of a PITA. Almost any kind of reporting on 3 is worse.
A relational design would have the person ID, the committee ID (or name, but really, ID is best; especially with long names of things; I imagine you have or could create a table with committee names (and IDs).
But whether using the above or your 3 fields, this solution would work the same. The List() function will take either multiple fields or a single related field, and return non-empty values as a return-separated list, in the order the values (or records) were entered (or the sort order of the relationship, if any).
Sometimes you'd want the values to be comma-separated instead (usually for display only, since you already have the original data somewhere else).
Substitute ( List ( committee 1; committee 2; committee 3); ¶; ", ")
¶ is the carriage return symbol. It is on the buttons in the calculation box, or you can type it, Opt-7 on a Mac (likely Alt-7 on Windows). If the field is for display only, not for Finds, then you can make its Storage, [x] Do not store.