You can use 'Run if' action inside a 'For each' to filter the collection output.
Does that mean then in each Run if action I have to manually input the value to check against? I was hoping to avoid that.
you do not need a loop. CAML support <In /> operator which you can feed with values to filter by.
see reference - In Element (Query)
it's not directly clickable with query list's query builder, so you have to build the CAML query on your own.
first you need to convert collection of users into CAML's <Values /> elements.
this can be simply done with build string action
for better reading the formula is
{TextStart}<Value Type='User'>{TextEnd}
fn-Replace({TextStart}{WorkflowVariable:Coll_Users}{TextEnd},
{TextStart};{TextEnd},
{TextStart}</Value><Value Type='User'>{TextEnd})
{TextStart}</Value>{TextEnd}
then this output can be simply used in Query list action
<Query>
<Lists>
<List ID="{8BF2B7A1-A3BE-44D7-940C-FBF9EE867555}" />
</Lists>
<ViewFields>
<FieldRef Name="ID" />
</ViewFields>
<Where>
<In>
<FieldRef Name='singlepp' />
<Values>
{WorkflowVariable:ValuesList}
</Values>
</In>
</Where>
</Query>
Note: this was tested with person field setting 'Show field' configured to 'Account' so users in a collection have to following that format and so have to be in format claim|domainloginname