Well first of all, have a look at the "pick closest" condition. It does exactly what your loop does. So you could do your above code with three conditions.
Objectfinder: ischeckingfortarget is true
System: For each objectfinder
ObjectA: pick closest to (objectfinder.x, objectfinder.y)
So now let's talk about what you want to do. So roughly this:
Start
Each finder pick closest obj and save it as finder.target
Move finder to their target
If the distance to the target is less than some distance
Then go back to start and pick another close object but not the old target.
What I'm not clear on is when the finder gets close to it's target and it picks a new one, do you want it to ignore just the last target or do you want to ignore all previous targets? Or do you want to do something else?
I just re-read what you wrote, so I guess you want a target, once reached to be ignored until the finder gets X distance away.
I guess you could filter away all the objects that are close to the target before finding the closest.
I'd give your finder object a variable called target with a default value of -1. Then Your events could look like this:
Finder: target = -1
For each finder
System: pick Sprite by comparison distance(Sprite.x,sprite.y,finder.x,finder.y) > 100
Sprite: pick closest to (finder.x, finder.y)
--- finder: set target to Sprite.uid
For each finder
Sprite: pick by uid finder.target
--- finder: set angle to (Sprite.x, Sprite.y)
--- finder: move forward 100*dt pixels
For each finder
Sprite: pick by uid finder.target
System: compare distance(Sprite.x,Sprite.y,finder.x,finder.y) <100
--- finder: set target to -1
Edit: ninja'd