# ColumnNo - チャート関数

ColumnNo() は、ピボット テーブルの現在の行セグメント内の現在列の番号を返します。最初の列の番号は 1 です。

構文:

ColumnNo([total])

引数

| 引数 | 説明 |
| --- | --- |
| TOTAL | テーブルが 1 軸の場合、または TOTAL 修飾子が引数として使用される場合は、現在の列セグメントは常に列全体と等しくなります。<br><br>[集計範囲の定義](https://help.qlik.com/ja-JP/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 で、`Q4` は 4 番目の列なので、`ColumnNo` 関数の出力は `4` を返します。したがって、メジャーの数式は `4000` に `4` を乗算して、`16000` を返します。

## 例 - ColumnNo のシナリオ

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

#### チャートの数式

概要

データセットには四半期ごとの売上高が含まれています。企業は、Q1 と Q3 (奇数列) の売上データを 5％ 増加し、残りの列 (Q2 と Q4) の売上を 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` に等しいため、関数は 3 つの列を遡って参照します)。

`RangeSum()`: `RangeSum` 関数は、指定された値の範囲の合計を計算します。null 値はゼロとして処理されます。この式では、`RangeSum` は、`Before()` 関数によって取得された先行するすべての `Sales` 値と現在のセルの売上を合計することによって、効果的に累積合計を生成します。