# A Power BI table formatted column by column

> Get started with Table Plume: go from your data to a sortable, searchable table, formatted column by column, with totals that actually make sense.

- Language: English
- Web page: https://plumevisuals.com/en/tutorials/tableau-mise-en-forme-par-colonne
- Published: 2026-10-04
- Visual: Table Plume, technical reference: https://plumevisuals.com/ai/visuals/table.md
- If an option name in this tutorial differs from the technical reference, the reference is right (it is generated from the visual's code).

## At a glance

- **What the visual does.** Table Plume replaces the native Power BI table. Picture a well-kept Excel sheet: one row per product, one column per piece of information, headers that stay in place when you scroll, and a total row that is always visible at the bottom. The difference from the native table: you set up each column **separately** (decimals, units, colors, total, bars…) from a single card in the **Format pane**.
- **When to use it:**
  - a detailed list to read row by row (products, customers, orders, projects);
  - a tracking table where each column has its own format (amounts in thousands, rates in %, colored variances);
  - a total that has to make sense for each column (no "sum of average order values");
  - a long list that scrolls by itself on a display screen.
- **When to pick something else:** if you want levels that expand and collapse with subtotals (region › city) or years spread across columns, use **Matrix Plume**. For a single highlighted number, use **KPI Plume**.
- **By the end, you will know how to:**
  - build a table from columns and measures;
  - set up one specific column without touching the others;
  - choose the right total for each column;
  - add sorting, search, a frozen first column, and banded rows;
  - use the ★ features: data bars, icons, groups, sparklines.
- **What you need:** Power BI Desktop, the Table Plume visual installed (see [the common basics](/en/tutorials/bien-demarrer-visuels-plume)), a data table, and a few measures.

## The data you need

**The expected shape.** Table Plume works like the native table: you drag **columns** (fields from your table, for example `Product`) and **measures** (DAX calculations, for example `Revenue`; see the [glossary](/en/tutorials/bien-demarrer-visuels-plume#glossary)). The visual shows **one row per distinct combination of the columns** you dragged in, and calculates each measure for that row.

- What should be a **column**: whatever describes the row (product, category, customer, date).
- What should be a **measure**: whatever is calculated (revenue, rate, number of orders). A measure is recalculated correctly on each row and in the total; a rate stored in a column would be summed.

**Sample dataset**: the `Sales` table, one row per product and per year (made-up data from a home furnishings store).

| Product | Category | Year | Amount | Margin | Orders |
|---|---|---|---|---|---|
| Arc Lamp | Lighting | 2024 | 388,200 | 201,900 | 2,680 |
| Arc Lamp | Lighting | 2025 | 412,300 | 214,800 | 2,840 |
| Linen Pendant | Lighting | 2024 | 96,400 | 46,300 | 1,210 |
| Linen Pendant | Lighting | 2025 | 88,700 | 41,700 | 1,105 |
| Linen Sofa | Furniture | 2024 | 402,600 | 138,500 | 410 |
| Linen Sofa | Furniture | 2025 | 388,950 | 131,500 | 395 |
| Oak Table | Furniture | 2024 | 251,300 | 92,900 | 520 |
| Oak Table | Furniture | 2025 | 276,800 | 101,300 | 571 |
| Wool Throw | Textiles | 2024 | 58,900 | 33,000 | 1,470 |
| Wool Throw | Textiles | 2025 | 71,200 | 39,900 | 1,760 |
| Velvet Cushion | Textiles | 2024 | 41,800 | 25,100 | 1,980 |
| Velvet Cushion | Textiles | 2025 | 39,400 | 23,600 | 1,850 |

**The same dataset, ready to paste.** In Power BI Desktop, on the **Modeling › New table** tab, paste:

```dax
Sales =
DATATABLE (
    "Product", STRING,
    "Category", STRING,
    "Year", INTEGER,
    "Amount", DOUBLE,
    "Margin", DOUBLE,
    "Orders", INTEGER,
    {
        { "Arc Lamp", "Lighting", 2024, 388200, 201900, 2680 },
        { "Arc Lamp", "Lighting", 2025, 412300, 214800, 2840 },
        { "Linen Pendant", "Lighting", 2024, 96400, 46300, 1210 },
        { "Linen Pendant", "Lighting", 2025, 88700, 41700, 1105 },
        { "Linen Sofa", "Furniture", 2024, 402600, 138500, 410 },
        { "Linen Sofa", "Furniture", 2025, 388950, 131500, 395 },
        { "Oak Table", "Furniture", 2024, 251300, 92900, 520 },
        { "Oak Table", "Furniture", 2025, 276800, 101300, 571 },
        { "Wool Throw", "Textiles", 2024, 58900, 33000, 1470 },
        { "Wool Throw", "Textiles", 2025, 71200, 39900, 1760 },
        { "Velvet Cushion", "Textiles", 2024, 41800, 25100, 1980 },
        { "Velvet Cushion", "Textiles", 2025, 39400, 23600, 1850 }
    }
)
```

**The measures to create.** Select the `Sales` table, then **Modeling › New measure**, once per measure:

```dax
-- Revenue: adds up the Amount column for the visible rows
Revenue = SUM ( Sales[Amount] )

-- Margin in euros: adds up the Margin column
Gross Margin = SUM ( Sales[Margin] )

-- Margin rate: the margin divided by revenue.
-- DIVIDE avoids the divide-by-zero error (it returns blank instead).
Margin Rate = DIVIDE ( [Gross Margin], [Revenue] )

-- Number of orders: adds up the Orders column
Order Count = SUM ( Sales[Orders] )

-- Average order value: revenue divided by the number of orders
Avg Order Value = DIVIDE ( [Revenue], [Order Count] )

-- Revenue change between 2024 and 2025
Change 2025 =
VAR Rev2025 = CALCULATE ( [Revenue], Sales[Year] = 2025 )   -- revenue, keeping only 2025
VAR Rev2024 = CALCULATE ( [Revenue], Sales[Year] = 2024 )   -- revenue, keeping only 2024
RETURN
    DIVIDE ( Rev2025 - Rev2024, Rev2024 )                    -- the difference relative to 2024
```

Then give `Margin Rate` and `Change 2025` a **Percentage** format: select the measure, then **Measure tools › Format › Percentage**. The visual uses each field's format, and the automatic total skips percentage columns.

**Preparation pitfalls:**

- **A numeric column summed by mistake.** If you drag the `Year` column into the table, Power BI may sum it (2024 + 2025…). Select it in the **Data pane** and set **Column tools › Summarization** to **Don't summarize**.
- **A rate in a calculated column.** It would be summed in the total. Always write a ratio as a measure with `DIVIDE`.
- **Links.** A column whose data category is **Web URL** (**Column tools › Data category**) becomes a clickable link.
- **Volume.** The visual loads up to 100,000 rows; above 300 rows, only the rows visible on screen are drawn (scrolling stays smooth).
- **Empty rows.** Rows where every measure is blank are removed.

## Step by step: your first Plume table in 10 minutes

We start from the data and measures in ["The data you need"](#the-data-you-need).

1. Click an empty area of the page, then the **Table Plume** icon in the **Visualizations pane**. An empty frame appears, with a welcome page inviting you to add fields.
2. Drag `Product`, then `Category`, into the **Columns** well. The table shows six rows, one per product.
3. Drag into the same well, in this order, `Revenue`, `Change 2025`, `Margin Rate`, `Order Count`, and `Avg Order Value`. The order in the well becomes the column order; numbers are right-aligned.

4. In the **Format pane**, **Totals** card: turn on **Show**. A "Total" row appears at the bottom. `Change 2025` and `Margin Rate` have no value there (they are percentages), but `Avg Order Value` shows a sum that makes no sense.
5. In the **Column formatting** card, open the list at the top of the card and choose `Avg Order Value`. Set **Total** to *None*. The total cell for `Avg Order Value` empties; the other columns don't change.

6. In the same list, choose `Change 2025`. Set **Conditional formatting** to *Colored negatives*. The drops (Linen Pendant, Linen Sofa, Velvet Cushion) turn red.
7. Choose `Revenue` in the list. Set **Display units** to *Thousands* and **Decimals (-1 = field format)** to 0. Amounts are shown in thousands, with no decimals.
8. **Grid** card: turn on **Banded rows**. Every other row is lightly shaded.
9. **Toolbar** card: turn on **Show**. A search box and the row count appear above the table.
10. Try it: click the `Revenue` header to sort, then type "linen" in the search box.

**Expected result:** a table of 6 products, sorted by revenue, with drops in red, revenue in thousands, a total row with no absurd values, and a search that keeps only Linen Pendant and Linen Sofa (search ignores accents and capitalization).

## Troubleshooting

| What you see | Likely cause | Fix |
|---|---|---|
| No **fx** button on the Format pane colors | Power BI doesn't offer conditional formatting to table- or matrix-type visuals. | Use the free **Cell elements** card (background, font, icons, links by rules or by measure), or a measure in **Dynamic format**. |
| A column's total cell is empty | The column has a percentage format: the *Automatic* total skips it. | Choose the column in **Column formatting** and set **Total** (*Average*, *Minimum*…) if a calculation over the displayed rows works for you. |
| A meaningless total (average order value summed) | The *Automatic* total adds up the displayed values. | Set **Total** to *None* for that column. |
| No **Conditional formatting** for a column | The column isn't numeric, or the list at the top of the card points to another column. | Check which column is selected in the list. |
| A setting was applied to every column | The list at the top of **Column formatting** was set to *All columns*. | Choose the column you want before changing settings. |
| No search box | The **Toolbar** is off by default. | **Toolbar › Show**. |
| Names typed in **Group** do nothing | **Collapsible groups ★** is off. | Turn it on in **Column groups**. |
| A column disappeared after turning on row groups | It is used as a title row; its name is in the first column's header. | This is expected; set **Group by the first columns ★** to 0 to go back to a flat table. |
| Auto-scroll doesn't move | All rows fit in the visual, the mouse is over the visual, or the bottom was reached with **Loop (back to the top at the end)** off. | Make the list longer or the visual smaller; move the mouse away; turn on **Loop (back to the top at the end)**. |
| A measure in **Dynamic format** has no effect on a column | A setting made by hand for that column overrides the *All columns* level. | Remove that column's exception. |
| The "Premium preview" watermark appears | A ★ feature is used without a key (formatting, slanted headers, groups, auto-scroll, sparkline, style). | Paste your key or switch back to a free option (see [the common basics](/en/tutorials/bien-demarrer-visuels-plume)). |

## Key takeaways

- One well is enough: **Columns**, where the order of the fields is the display order.
- **Column formatting** works as "general setting, then exceptions": always check which column is selected in the list at the top of the card.
- Write ratios as measures and set the **Total** column by column.
- Sorting, widths, and search change what is displayed, never the report filters.
- Feel free to try the ★ features: without a key, they only show a watermark.

## Learn more

- [Table Plume: 10 how-to guides (rates, bars, groups, auto-scroll…)](/en/tutorials/table-plume-cas-pratiques): recipes for common needs.
- [Table Plume: every field and setting explained](/en/tutorials/table-plume-champs-et-reglages): each field well and each setting.
- [Getting started with Plume visuals](/en/tutorials/bien-demarrer-visuels-plume): installation, license, styles, and settings shared by all the visuals.
- The visual's page: [Table Plume](/en/visuals/table). A question? [Support](/en/support).
