I see your "formula" column in the original table depends on pH0. But the "formula" column in your test.jmp does not depend on pH0. I guess that is a misunderstand between us. Let me still use your original data, so Phi0, sigma0, pHf depend on pH0, not "Parameter by column".
Let's look at the first three rows:
Their pH0 = 0.2. Because of that, the formula of the first row can be denoted by:
f1(Phi0_pH0_0.2, sigma0_pH0_0.2, pHf0_pH0_0.2).
The 2nd and 3rd row formulas are:
f2(Phi0_pH0_0.2, sigma0_pH0_0.2, pHf0_pH0_0.2) and
f3(Phi0_pH0_0.2, sigma0_pH0_0.2, pHf0_pH0_0.2). The three rows form Group 1.
Now look at row 4, 5, 6. Their pH0 = 0.3. So the three formulas are:
f1(Phi0_pH0_0.3, sigma0_pH0_0.3, pHf0_pH0_0.3),
f2(Phi0_pH0_0.3, sigma0_pH0_0.3, pHf0_pH0_0.3), and
f3(Phi0_pH0_0.3, sigma0_pH0_0.3, pHf0_pH0_0.3). The three rows form Group 2.
Group1 and Group2 do not share same set of parameters. They are independent. Minimizing errors for Group1 has nothing to do with minimizing errors for Group2. So, we can optimize group by group.
If you keep parameter set in the three intermediate columns as Phi0_pH0_0.2, Phi0_pH0_0.3, Phi0_pH0_0.4, etc. each row sees all of them. You can see that if you run Nonlinear by pH0, and every group will have hundreds parameters listed. But among them, only three are relevant for each row, and every three rows.
What I did is creating three parameters only, inside of the column "formula". I named them paramPhi0, paramSigma0, parampHf. Even there are just three, when we run Nonlinear by "pH0", the platform will create different sets of the three parameters by "pH0". It literally creates those hundreds of parameters for you by "pH0". And each little Nonlinear by pH0 just need to worry about three parameters.