How to create a formula to find out First Non-Zero value from a group of cells

I want to create a formula to find out the First Non-Zero value from a group of cell only, not from the whole column, and want to put that value into a target cell.
Eg. From Cell B3 to B20, then from B 24 to B45 something like that

What exactly did you not understand in this answer? And why did you create a new account?

I tried to create it But all my efforts went in vain.
=IFERROR(INDEX($LEDGER.G3:$LEDGER.G25,SMALL(IF(N($LEDGER.G3:$LEDGER.G25)<>0,ROW($LEDGER.G3:$LEDGER.G25),""),2)),"") i tried this but the value showing in the target cell is Zero

When I replace all G3 to G1 it’s fine why ?

This is because of this part of the formula - ROW($LEDGER.G3:$LEDGER.G25). Here the first cell of the range should be from the first row - ROW(G$1:G$25). If you look at the formula not in the comment, but in the answer, you will notice that the expression ROW(A:A) is used there.