Please bring back simple find within 10%

I know there is a way to do this, but the right-click select for find within 10% was extremely useful for what I frequently need to do. Maybe it is there somewhere, but it is eluding me right now.

It’s still there, in the Find/Select dialog.

Right, thanks for the reminder – I knew it was somewhere.

But it is now very complex to achieve what was a profoundly simple operation: Right-click, pick, release. I am too old and or stupid to figure out how to write a procedure/action/macro to let me click on a cell and invoke an action to find all records within 10% of that cell. Not for want of trying. And I can do one that is tied to a field name, but I fail the test when trying to write a universal macro. Maybe I’ll try again tomorrow.

Well, I kludged it, and it works, so that’s good enough for now.

Here’s what worked:


Let NUMFIELD = «»
select («» => (NUMFIELD*0.9) and «» <= (NUMFIELD*1.1))

But if I take out the Let statement and replace with «», which seems like the same thing to me, it doesn’t work.

The procedure that works is creating a local variable named NUMFIELD. It sets that variable to the value of the current field, in the current record. The select statement then selects those records where the value in the current field is within 10% of the value in the variable.

I really don’t know what it means to replace the Let statement with «». «» by itself isn’t a statement. I don’t see any way this can be done without storing the current value in a variable, so that it’s available for every comparison, and that’s what your working version is doing.

I think what he means is this:

select («» => («»*0.9) and «» <= («»*1.1))

Of course this code won’t work at all, inn fact it will select all records. For example, suppose the first record contains 45 in the current field, then this formula would be the equivalent of:

(45=> (45 * 0.9) and 45 <= (45*1.1))

Which of course is true.

Now suppose the next record contains 286 in the current field, then this formula would be the equivalent of:

(286 => (286 * 0.9) and 286 <= (286*1.1))

Which of course is also true. You can continue on down through every record and the formula is going to always be true.

What you need to do is save the value in the current record, and compare that over and over again. That’s what the let statement does – save the value in the current record into a variable so you can compare it over and over again with the values in every record.