Previous posts (e.g. Stress blocks in AS 3600) have presented Excel User Defined Functions (UDFs) that determine the ultimate bending strength of a reinforced concrete section with the use of a rectangular concrete stress block, with depth and stress factors adjusted so that the results are identical to those using a parabolic-rectangular block, such as that defined in Eurocode 2. This post provides details of this procedure, including VBA code for a UDF to calculate the required factors for any specified concrete strength.
The figure below (from Eurocode 2) illustrates how a non-linear stress-strain curve may be approximated by a rectangular stress block, applied over part of the area in compression.
If the stress block is being used with a rectangular cross section it is possible to calculate values for the depth and stress such that the area under the block, and the lever arm from the neutral axis, are exactly equal to that for any specified curvilinear stress-strain relationship.
The procedure for calculating the rectangular stress block equivalent to the Eurocode 2 parabolic/rectangular block is shown below :
This procedure can be simply coded in a VBA function (to use the function in your own spreadsheet, copy and paste the code into any VBA module):
Update 15 Aug 2020:
Wordpress was corrupting the the posted code, so I have uploaded a spreadsheet with full open-source code to:
EquivSB.xlsb
And this is what the function looks like in use:

Equivsb() Function
The function arguments are:
- Fc: the concrete strength grade
- Out (optional): 0 or omit to return the full array of output values
-1 to return an array of descriptions of each output value
1 to 5 to return a specified value - Rfact (optional): reduction factor on concrete stress (default = 0.9)
Enter as an array function to return the full array (see here for details of using array functions).
Pingback: Concrete Stress Blocks | Newton Excel Bach, not (just) an Excel Blog