Arte SheetsLearn. Try. Understand.

Charts & Visual Data Modeling

Marimekko (Mekko) Chart Formula: Variable Column Widths, Cumulative X-Spans & Cell Area Share

Construct a two-dimensional Marimekko (Mosaic) market-map table: compute Segment Horizontal Width % W_j, Cumulative X-Axis Start/End Coordinates, Within-Segment Vertical Mix %, and Rectangle Area = Grand-Total Market Share!

Why consulting firms love Marimekko charts: Width * Height = Exact Share of Total Market!

A standard 100% Stacked Column chart makes a tiny $5M niche segment look just as wide and visually important as a $95M core market! A Marimekko (Mekko or Mosaic) chart solves this by encoding TWO percentage dimensions simultaneously: column j’s horizontal width W_j = 100 * Segment_Total_j / Grand_Total represents segment size along a 0%–100% X-axis, while competitor i’s vertical height H_ij = 100 * Sales_ij / Segment_Total_j represents within-segment share along a 0%–100% Y-axis!

Because rectangle area equals Width * Height, every tile’s visual area (W_j / 100) * (H_ij / 100) = Sales_ij / Grand_Total equals that cell’s exact share of the entire industry with zero distortion! Computing cumulative X-boundaries X_end,j = SUM_{k<=j} W_k lets you build variable-width stacked area polygons cleanly in any spreadsheet.

Market SegmentEnterprise ($M)SMB ($M)Segment Total ($M)Horizontal Width W_j (%)Cumulative X-End (%)
North America903012060.00%60.00%
Europe35155025.00%85.00%
APAC12183015.00%100.00%

Segment Horizontal Width Share W_j (%) of Grand Total Market

Computes 100 * (B2 + C2) / (SUM(B2:B4) + SUM(C2:C4)) for Segment 1 across Enterprise (B2:B4) and SMB (C2:C4).

=IF(OR(MIN(B2:C4) < 0, SUM(B2:C4) <= 0), "Requires Non-Negative Revenues & Positive Grand Total", ROUND(100 * (B2 + C2) / SUM(B2:C4), 2))

Within-Segment Vertical Share H_11 (%) & Overall Industry Tile Area Share (%)

Evaluates 100 * B2 / (B2 + C2) (vertical height in Segment 1), whose product with W_1 / 100 equals overall market share 100 * B2 / SUM(B2:C4).

=IF(OR(MIN(B2:C4) < 0, B2 + C2 <= 0), "Segment Total Must Be Positive", ROUND(100 * B2 / (B2 + C2), 2))

Try the example

Use the original values or change them to test your understanding.

Further reading