# ColumnNo - 圖表函數

ColumnNo() 傳回樞紐分析表中目前列區段內，目前資料行的編號。第一行的編號為 1。

語法：

ColumnNo([total])

引數

| 引數 | 描述 |
| --- | --- |
| TOTAL | 如果表格為單一維度或 TOTAL 限定詞作為引數，則目前資料行區段一律等於整個資料行。<br><br>[定義彙總範圍](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

如果樞紐分析表有多個水平維度，則目前列區段僅會包括在所有維度列中與目前資料行有相同值的資料行 (顯示欄位間排序順序之最後一個水平維度的列除外)。樞紐分析表中水平維度的欄位間排序順序，可簡單透過維度從上至下的順序來定義。。

資訊備註當任何圖表運算式使用了此圖表函數時，就不允許在圖表中依據 Y 值排序，或在表格中依據運算式資料行排序。因此，這些排序替代選項會自動停用。若您在視覺化或表格中使用此圖表函數，視覺化的排序將還原為對此函數的排序輸入。

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| ` IF( ColumnNo()=1, 0, Sum(Sales) / Before(Sum(Sales)))  ` | 若 `ColumnNo` 等於 1，圖表將傳回零。否則，這將傳回 `Sum(Sales) / Before(Sum(Sales)` 的結果。在此範例中，從第 2 欄之後，圖表將會傳回值，而第 1 欄將傳回零。 |

## 範例 - ColumnNo 基礎事項

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/columnno.htm)

#### 圖表運算式

概述

資料集包含每季的銷售資料。此範例將每個期間的銷售值乘以該期間的欄編號。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `Period`

  * `Sales`

載入指令碼

```
Example:
Load * inline [
Period, Sales
Q1, 1000
Q2, 2000
Q3, 3000
Q4, 4000
];
```

結果

載入資料並開啟工作表。建立新的樞紐分析表並將此欄位新增為欄維度：

* `Period`

建立下列量值：

* `=Sum(Sales) * ColumnNo()`，用來計算銷售值總和乘以欄編號 (本案例中為季度)。

結果表格

| Q1 | Q2 | Q3 | Q4 |
| --- | --- | --- | --- |
| 1000 | 4000 | 9000 | 16000 |

每季的銷售總和乘以 `ColumnNo` 函數的輸出。例如，`Q4` 中的銷售值為 4000，`ColumnNo` 函數的輸出會傳回 `4`，因為 `Q4` 是第四欄。因此，量值運算式將 `4000` 乘以 `4` 並傳回 `16000`。

## 範例 - ColumnNo 使用情境

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/columnno.htm)

#### 圖表運算式

概述

資料集包含每季銷售數據。一家公司希望將第 1 季和第 3 季 (奇數欄) 的銷售資料增加 5%，並將剩餘欄 (第 2 季和第 4 季) 的銷售額提高 10%。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `Period`

  * `Sales`

載入指令碼

```
Example:
Load * inline [
Period, Sales
Q1, 1000
Q2, 2000
Q3, 3000
Q4, 4000
];
```

結果

載入資料並開啟工作表。建立新的樞紐分析表並將此欄位新增為欄維度：

* `Period`

建立下列量值：

* `=Sum(Sales)`，用來計算銷售總和。

* `=If(Odd(ColumnNo()), Amount * 1.05, Amount * 1.10)`，將奇數欄的銷售量增加 5%，其餘欄增加 10%。

結果表格

| Q1 | Q2 | Q3 | Q4 |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Sum(Sales) | If(Odd(ColumnNo()), Amount \* 1.05, Amount \* 1.10) | Sum(Sales) | If(Odd(ColumnNo()), Amount \* 1.05, Amount \* 1.10) | Sum(Sales) | If(Odd(ColumnNo()), Amount \* 1.05, Amount \* 1.10) | Sum(Sales) | If(Odd(ColumnNo()), Amount \* 1.05, Amount \* 1.10) |
| 1000 | 1050 | 2000 | 2200 | 3000 | 3150 | 4000 | 4400 |

結果顯示，奇數欄 1 和 3 (`Q1` 和 `Q3`) 的銷售值增加了 5%，而其餘偶數欄 2 和 4 (`Q2` 和 `Q4`) 則增加了 10%。

## 範例 - ColumnNo 進階使用情境

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/InterRecordFunctions/columnno.htm)

#### 圖表運算式

概述

此範例使用與前一個情境相同的資料集來呈現每個期間的累積總值。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `Period`

  * `Sales`

載入指令碼

```
Example:
Load * inline [
Period, Sales
Q1, 1000
Q2, 2000
Q3, 3000
Q4, 4000
];
```

結果

載入資料並開啟工作表。建立新的樞紐分析表並將此欄位新增為欄維度：

* `Period`

建立下列量值：

* `=RangeSum(Before(Sum(Sales), 0, ColumnNo()))`，用來計算累積總計。

結果表格

| Q1 | Q2 | Q3 | Q4 |
| --- | --- | --- | --- |
| 1000 | 3000 | 6000 | 10000 |

此範例顯示如何使用 `ColumnNo` 函數產生累積總計。以下解釋提供了有關量值運算式的更多詳細資訊：`RangeSum(Before(Sum(Sales), 0, ColumnNo()))`。

`Sum(Sales)`：計算樞紐分析表中目前儲存格的銷售總和。

`Before(Sum(Sales), 0, ColumnNo())`：`Before` 函數從樞紐分析表內前面的欄中擷取值。

* `Sum(Sales)` 引數確保函數擷取前面儲存格的 `Sales` 總和。

* `0` 的位移值指定了欄的位移量 (保持在目前欄的目前列區段中)。

* `ColumnNo()` 判定擷取資料時要傳回多少欄。這動態地呈現目前欄的位置 (例如，對於第 3 欄，`ColumnNo()` 等於 `3`，因此該函數會往前越過三欄)。

`RangeSum()`：`RangeSum` 函數計算所提供值範圍的總和。這將 Null 值視為零來處理。在此運算式中，`RangeSum` 將 `Before()` 函數擷取的所有前置 `Sales` 值以及目前儲存格的銷售額相加，有效地產生了累積總計。