How to Use VSTACK and LAMBDA to Author Dynamic Dalton Inequality Index Models in Microsoft Excel

In normative welfare economics, inequality measures evaluate not merely the mathematical dispersion of incomes, but the societal loss in aggregate welfare resulting from unequal distribution. Hugh Dalton pioneered this approach with the Dalton inequality index (also known as the Dalton-Atkinson social welfare index), which quantifies the proportional welfare loss by comparing the actual aggregate utility against the hypothetical utility achievable if total income were divided equally. Modern Microsoft Excel dynamic array functions—specifically VSTACK, LAMBDA, and LET—allow economic analysts to build dynamic Dalton social welfare models cleanly without legacy VBA macros.

Mathematical Foundations of the Dalton Index

Given an observed income distribution vector $y_1, y_2, dots, y_n$ with arithmetic mean $mu$, the Dalton inequality index $D$ evaluates individual utility under a concave social utility function $U(y)$:

D = 1 - ( (1 / n) * SUM(U(y_i)) ) / U(mu)

Under the standard logarithmic utility formulation ($U(y) = ln(y)$ for $y > 0$):

D = 1 - ( (1 / n) * SUM(ln(y_i)) ) / ln(mu)

Where:

  • n denotes the total count of valid observation units.
  • mu represents the arithmetic mean of the distribution vector.
  • SUM(ln(y_i)) / n represents the average societal utility derived from the actual unequal distribution.
  • ln(mu) represents the maximum potential societal utility achieved under completely egalitarian distribution.
  • $D$ ranges from 0 (perfect equality where actual utility equals potential utility) to 1 (extreme inequality).

Implementing the Dalton Index Dynamic Array Formula in Excel

Using the LET function, we can construct the mathematical calculation into readable intermediate steps that handle uncurated columns dynamically:

=LET(
    raw_data, A2:A101,
    clean_data, FILTER(raw_data, ISNUMBER(raw_data) * (raw_data > 0)),
    n, COUNT(clean_data),
    mu, AVERAGE(clean_data),
    actual_utility, AVERAGE(LN(clean_data)),
    potential_utility, LN(mu),
    dalton_index, 1 - (actual_utility / potential_utility),
    dalton_index
)

This formula strips invalid or negative values, calculates the arithmetic mean, computes natural log utilities, and derives the exact Dalton welfare loss index instantly.

Encapsulating the Formula into a Reusable Custom LAMBDA

To deploy this calculation across multiple economic workbooks, define a reusable custom function named DALTON.INDEX in the Excel Name Manager:

  1. Navigate to the Formulas tab and click Name Manager.
  2. Click New, enter DALTON.INDEX in the Name field, and set Scope to Workbook.
  3. In the Refers to box, input the following formula:
    =LAMBDA(values,
        LET(
            clean, FILTER(values, ISNUMBER(values) * (values > 0)),
            mu, AVERAGE(clean),
            1 - (AVERAGE(LN(clean)) / LN(mu))
        )
    )
  4. Click OK and close the dialogue.

Building Comparative Cohort Dashboards with VSTACK

We can combine multiple regional or demographic income cohorts into a side-by-side comparative dashboard using VSTACK:

=LET(
    cohort_A, B2:B100,
    cohort_B, C2:C100,
    header, HSTACK("Demographic Cohort", "Dalton Welfare Loss", "Mean Income (£)", "Observations"),
    row_A, HSTACK("Urban District", DALTON.INDEX(cohort_A), AVERAGE(cohort_A), COUNT(cohort_A)),
    row_B, HSTACK("Rural District", DALTON.INDEX(cohort_B), AVERAGE(cohort_B), COUNT(cohort_B)),
    VSTACK(header, row_A, row_B)
)

This dynamic array structure automatically updates whenever underlying survey data changes, delivering instantaneous insight into normative welfare losses resulting from unequal distributions across different societal cohorts.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.