Avatar of Member_2_5230414
Member_2_5230414
 asked on

excel fow row ID

I have the following function to get a max number if a row = 1 .. How could i use this to get the row id????

=LARGE(IF(Result!N2:N1001=1,Result!O2:O1001,""),2)
VB ScriptVisual Basic ClassicMicrosoft Excel

Avatar of undefined
Last Comment
Martin Liss

8/22/2022 - Mon
barry houdini

Your formula is getting the second largest number. What do you mean "row id" - do you want the row number where that value occurs? If so try this formula

=MATCH(1,(Result!O1:O1001=LARGE(IF(Result!N1:N1001=1,Result!O1:O1001,""),2))*(Result!N1:N1001=1),0)

confirmed with CTRL+SHIFT+ENTER

regards, barry
NBVC

Do you mean the row number?

Try:

=LARGE(IF(Result!N2:N1001=1,ROW(Result!N2:N1001)-ROW(Result!N2)+1,""),2)

confirmed with CTRL+SHIFT+ENTER
Member_2_5230414

ASKER
i have tried =LARGE(IF(Result!N2:N1001=A2,ROW(Result!N2:N1001)-ROW(Result!N2)+1,""),1) and it seems to cound down 10/9/8/7/6 if i try doing the top 9 like this

=LARGE(IF(Result!N2:N1001=A2,ROW(Result!N2:N1001)-ROW(Result!N2)+1,""),1)
=LARGE(IF(Result!N2:N1001=A2,ROW(Result!N2:N1001)-ROW(Result!N2)+1,""),2)
=LARGE(IF(Result!N2:N1001=A2,ROW(Result!N2:N1001)-ROW(Result!N2)+1,""),3)
=LARGE(IF(Result!N2:N1001=A2,ROW(Result!N2:N1001)-ROW(Result!N2)+1,""),4)
=LARGE(IF(Result!N2:N1001=A2,ROW(Result!N2:N1001)-ROW(Result!N2)+1,""),5)


note that A2 is the race number so 1
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck
NBVC

With the LARGE() function you should get the largest row number first... if you want to retrieve from smallest row number you need SMALL()

=SMALL(IF(Result!N2:N1001=A2,ROW(Result!N2:N1001)-ROW(Result!N2)+1,""),2)

etc...
NBVC

Also, if you enter the formula with Absolute referencing and replace the K factor with ROWS(), you can enter the formula once and copy down to get next smallest/largest row number



=SMALL(IF(Result!$N$2:$N$1001=$A$2,ROW(Result!$N$2:$N$1001)-ROW(Result!$N$2)+1,""),ROWS($A$1:$A1))
barry houdini

Can you confirm what you want to do? I thought you were finding the largest (or second largest) number in column O where column N = 1...and that you wanted to find the row where that value resides. That's what my suggested formula does.

NB_VC is finding the the nth row where column N = 1, is that what you need - isn't column O relevant?

regards, barry
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
Member_2_5230414

ASKER
hi ok please find attached my spreadhseet.

Column E on sheet Stats is basicly putting the top 5 from sheet "Result" where its (j+l)/2 ..... i want to get the row its from so i can get horses name jockey ect...
J.P.B.S.xlsx
barry houdini

That's more along the lines I suggested - you can get the relevant horse name in row 2 with this formula

=INDEX(Result!D$2:D$1000,MATCH(1,INDEX((Result!O$2:O$1000=E2)*(Result!N$2:N$1000=1),0),0))

change the first range to whatever column you want for other info like jockey

regards, barry
Member_2_5230414

ASKER
do i just chnage e2 to e3...e4 ect as it does not seem to select the correct horse...

Its attached
J.P.B.S.xlsx
Experts Exchange is like having an extremely knowledgeable team sitting and waiting for your call. Couldn't do my job half as well as I do without it!
James Murphy
barry houdini

I don't see how that works - E2 = 150 and the only horse with a total of 150 is Kilgefin Star (IRE)? why is it Racing Pulse?

regards, barry
barry houdini

Looking again I realise that the formula needs to change to take account of duplicates, so that goes back to a combination of my suggestion and NB_VC's, i.e this formula in row 2

=IF(E2="","",INDEX(Result!D$2:D$500,SMALL(IF(Result!O$2:O$500=E2,IF(Result!N$2:N$500=A2,ROW(Result!D$2:D$500)-ROW(Result!D$2)+1)),COUNTIFS(A$2:A2,A2,E$2:E2,E2))))

confirmed with CTRL+SHIFT+ENTER and copied down the column

That still gives the same horses, though......

I populated the numbers in column A for every row, otherwise it will be more complex (and I also had to remove a #VALUE! error from column O in Results) - see attached

regards, barry
Racing.xlsx
Member_2_5230414

ASKER
Ah yes sorry my mistake... what would i need to chnage in  
=IF(E2="","",INDEX(Result!D$2:D$500,SMALL(IF(Result!O$2:O$500=E2,IF(Result!N$2:N$500=A2,ROW(Result!D$2:D$500)-ROW(Result!D$2)+1)),COUNTIFS(A$2:A2,A2,E$2:E2,E2))))

Open in new window

if i wanted to chnage my selection for form(B) or Odds (K)??
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.
Member_2_5230414

ASKER
I have seemed to find an error where when i run the tidy up macro the results on the sts page say #ref and dne update :S

I have attached the spreadsheet with the new information in and the old information currently on the stats page.

What you do is on the INFO sheet on the top right you will see a button that says "Run TidyUp". Click on that and it should provide the top 5 horses ect on the stats page.... (It updates the Result page and lets you stats page pull the information)

Upon doing this the Results page is updated but the Stats page is full of #REF
J.P.B.S.xlsm
NBVC

Once you delete the "Result" sheet in your macro, the Info sheet formulas no longer find the Result sheet, and automatically changes the sheet names to the REF! error.  Adding the Result sheet back wont fix it.

The things you can do....

1.  Don't delete the Result sheet.  Instead clear everything, then instead of "adding" a Result sheet in the macro, just use the existing one.

2.  Convert all the formula in the Result sheet to include the INDIRECT() function.  This is less recommended as the INDIRECT formula adds volatility to the workbook, i.e. force repeated recalculations....

for example the formula in B2 would be:

=IF(E2="","",INDEX(INDIRECT("Result!D$2:D$500"),SMALL(IF(INDIRECT("Result!O$2:O$500")=E2,IF(INDIRECT("Result!N$2:N$500")=A2,ROW(INDIRECT("Result!D$2:D$500"))-ROW(INDIRECT("Result!D$2"))+1)),COUNTIFS(A$2:A2,A2,E$2:E2,E2))))

so everywhere you reference the Result sheet, you will need to wrap an INDIRECT() function around it.  This will not delete the sheetname from the formula if you delete the RESULT sheet.
Member_2_5230414

ASKER
would i do it like this: =MAX(IF(INDIRECT(Result!$N$2:$N$1000=A68,Result!$O$2:$O$1000,"")))
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
ASKER CERTIFIED SOLUTION
NBVC

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Member_2_5230414

ASKER
Hey,

I tried it and did the results for today but still get a #Value! error....

Not sure why as formulars have stayed the same this time

Please see attached
J.P.B.S2.xlsm
barry houdini

You have a #VALUE! error in Results!O360 which causes that error in all your formulas (as I said in my last post). You need to remove that error from that cell then your formulas should work OK

regards, barry
Martin Liss

I've requested that this question be deleted for the following reason:

Not enough information to confirm an answer.
⚡ FREE TRIAL OFFER
Try out a week of full access for free.
Find out why thousands trust the EE community with their toughest problems.