I used listitem([artist],0), listitem([artist],1), etc. to create the variables, just as we have been discussing. Retrieving them by "artist" doesn't work when artist has multiple values, because it treats the entire string as a single entity.
What I discovered by trial and error is that, when you define a variable using listitem, then the actual variable that gets created contains the value of that listitem. For example, say artist="a; b", and I define this variable: v_numartistplays_listitem([artist],1). The actual variable that is created is named v_numartistplays_b.
Now, you say [Name] is an alias for the current category. That is exactly what I was hoping, because it works when that truly is the case, which I verified by being able to display the num artist plays for each group by modifying the thumbnail text.
Specifically, taking the above example, there are two categories (or group names), "a" and "b", so it is possible to access the global variable v_numartistplays_a and/or v_numartistplays_b with the expression v_numartistplays_[Name] where [Name] is the name of the category or grouping. I verified this by experiment.
Remember, what I am ultimately trying to do is calculate the total number of plays for each unique artist and sort the artists by those values, being sure to consistently treat the "artist" field as a list, not a single value. Meaning that if a track has artist="a; b" then both "a" and "b" should have their total number plays incremented by the track's Number Plays. This makes sense after all, since the track will show up under both "a" and "b" in the display.
So far, we haven't found a way to do this.