Ok, so that is probably where we’re stuck.
Based off of the screenshots, EnumList currently won’t work, because (and I’m guessing here) that I’m willing to bet that since there isn’t one standard delimiter to work with, only certain bands have their genres breaking into their individual values and other times where the genre is being stored as one whole string. This was one of the problems you were going to run into in that I mentioned earlier.
Now, that isn’t to say that EnumList isn’t going to be the plan though. It just needs to be standardized on both sides in order to work. However, as you have mentioned, it’s going to be a lot of work to standardize all of it.
So here is what I would do.
First, clone the app as it is right now as Version 2. This will where you can work on the hard part. More on that later.
On version 1, switch the band’s Genre to Text. From what I see, a majority of the bands used either commas or slashes to delineate. Then change the expression to
OR(CONTAINS([Genre], INDEX(Filter Table[Genre], 1)), CONTAINS([Genre], INDEX(Filter Table[Genre], 2)), CONTAINS([Genre], INDEX(Filter Table[Genre], 3)), {.....})
The {…} part you can delete or use that space to keep going with the expression. I would choose a maximum number of filters (maybe 3 or 5 sounds reasonable), and then come up with a message somewhere to users that only the first X selections will actually be filtered. Let me know if that works temporarily.
Version 2:
A new table consisting of just genre options. 1 genre per line. And I would stick to the most easily recognizable ones and not ones where people go “wtf does this even mean?” Then both genre columns can be EnumList of base Ref pointing to the new table. Both of these Valid_Ifs would also be just [Genre]. That will ensure both the filter list and the band’s listed genre’s will be from the same data. By default, AppSheet won’t do anything with it until you attempt to edit the band, at which point it will yell at your about the genre’s not being valid and won’t let you save it. Then your expression would be
OR(IN(INDEX(Filter Table[Genre], 1), [Genre]), IN(INDEX(Filter Table[Genre], 2), [Genre]), IN(INDEX(Filter Table[Genre], 3), [Genre]), {.....})