when using a 'Object A is overlapping/colliding with Object B' condition, Construct automatically puts the two objects in question into the SOL (selected objects list), meaning that any following Actions will always deal with the colliding/overlapping instances of A and B. since the loop that moves your collision-checker is a subevent of an event using that kind of condition, it can always only refer to the same instance.
a solution to this could be to restructure your code, so that the collision detection takes place in a subevent and does not influence picking adversely. or you could use families as a workaround: since it is possible for an object to belong to two different families, you can use that to pick object's outside of the current SOL (e.g. check collision for Family A (which reduces the SOL of Family A to a single instance), then afterwards loop through Family B (whose SOL still contains all instances), with Object A belonging to both).