> For the complete documentation index, see [llms.txt](https://manuals.i-reporter.jp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manuals.i-reporter.jp/create-a-form/prepare-the-formexcelfile/excelfunctions/index-function.md).

# INDEX関数について

## **INDEX関数の使用制限**

INDEX関数は、指定した範囲（配列）の中から、指定した行番号と列番号が交差する位置にあるセルの値を取得します。

{% hint style="success" %}
\=INDEX (配列, 行番号, 列番号)
{% endhint %}

### **配列（必須）**

セルの範囲を指定します。クラスター設定がされていないセルの値も取得できます。

* 配列定数、または、セル範囲形式 はi-Reporterでは使用できません。
* 印刷範囲設定外にあるセル、印刷範囲設定されていないシート上のセルも指定可能です。
* 指定先が**非表示シート**の場合、当該シートのセル値は配列データの取得対象外となります。必ず、表示されているシート内の範囲を指定してください。

### **行番号（必須）**

配列の中にある、値を返す**行**を指定します。

* クラスター設定されたセルを指定、または、1以上の正の整数を直接指定します。
* 小数が指定された場合は、小数点以下を切り捨てて計算を行います。
* 行番号に文字列が指定されていた場合、i-Repo Designer取り込み時にエラーになります。

  <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>"1”のように""を記述して数値変換した文字列もエラーになります。</p></div>

{% hint style="success" %}
Excelでは、行番号は「列番号が存在する場合を除き、必須」ですが、i-Reporterでは行番号が必須です。
{% endhint %}

### **列番号（必須）**

配列の中にある、値を返す**列**を指定します。

* クラスター設定されたセルを指定、または、1以上の正の整数を直接指定します。
* 小数が指定された場合は、小数点以下を切り捨てて計算を行います。
* 列番号に文字列が指定されていた場合、i-Repo Designer取り込み時にエラーになります。

  <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>"1”のように""を記述して数値変換した文字列もエラーになります。</p></div>

{% hint style="success" %}
Excelでは、列番号は「任意。列番号を省略する場合は、行番号が必要。」ですが、i-Reporterでは列番号が必須です。
{% endhint %}

## 引数として指定できないクラスター種別 <a href="#ninakurasut" id="ninakurasut"></a>

### **配列**

i-Reporterで「計算式に含めることが不可であるクラスター種別」は、INDEX関数の配列に指定することができません。

{% hint style="info" %}
詳細は、「[EXCEL関数機能](https://manuals.i-reporter.jp/create-a-form/prepare-the-formexcelfile/excelfunctions) ＞ Excel計算式における ConMas i-Reporterの仕様制限 ＞ 計算式に含めることが不可であるクラスター種別」をご参照ください。
{% endhint %}

また、配列にクラスター種別設定がされていないセルが含まれる場合、i-Reporterではセル内に記載されている文字列を読み込みます。

### **行番号・列番号**

行番号、列番号に指定できるクラスター種別は下記のみです。

* 数値選択
* 数値
* 計算式 ※計算結果が数値となる場合
* トグル選択
* 単一選択 ※数値として扱う場合
* バーコード ※数値として扱う場合

## **結合セルの扱い** <a href="#kurasutnonoi" id="kurasutnonoi"></a>

i-Reporterでは、結合セル内で一番左上にあるセルに値が保持されています。\
配列の中に結合セルが存在する場合は、各結合セルの左上セルが参照されるよう、行番号、列番号を指定してください。

【例1】

\=INDEX(A1:D4,1,3) の場合、結果は「60」

<div align="left"><figure><img src="https://3237210363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd8X0mqwp3tAAJZM8UeyH%2Fuploads%2F9n8rkB3c4u6VJZL60ZfN%2Fimage.png?alt=media&amp;token=78d2df30-65bd-4384-9142-e2ddadad4cba" alt="" width="277"><figcaption></figcaption></figure></div>

【例2】

\=INDEX(A1:D4,2,4) の場合、結果は「0」

<div align="left"><figure><img src="https://3237210363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd8X0mqwp3tAAJZM8UeyH%2Fuploads%2FCGblXoaeKQzbFW15JWdL%2Fimage.png?alt=media&amp;token=a55bac52-f507-48bd-a087-aa9d8f0b5bea" alt="" width="277"><figcaption></figcaption></figure></div>

## **引数として利用できるExcel関数** <a href="#kurasutnonoi" id="kurasutnonoi"></a>

INDEX関数内の引数として利用できるExcel関数の条件は下記の通りです。

* i-Reporterで対応しているExcel関数、または、四則演算

{% hint style="success" %}
INDEX関数内で別の関数が指定されている場合、その動作は各該当関数の仕様に基づきます。
{% endhint %}

## **行番号/列番号に「クラスター設定されたセル」を指定した場合の注意点**

行番号/列番号に「クラスター設定されたセル」を指定した場合、該当セルが未入力の状態＝INDEX関数の行/列が未指定の状態となり、Excel上でスピル表示が発生します。\
スピル表示がある帳票定義Excelファイルは、i-Repo Designer取り込み時にエラーが発生します。

{% hint style="success" %}
**スピル表示とは**

Excelの機能です。1つのセルに入力した数式が複数の結果を返すときに、その結果が自動的に隣接する複数セルへ「あふれ出す」ように表示されます。

【例】

セルB2に、行番号はセルC1を、列番号はセルD1を参照するINDEX関数を記述します。\
セルC1とセルD1が空白の場合、行と列が未指定となり、Excel上でスピル表示が発生します。

<img src="https://3237210363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd8X0mqwp3tAAJZM8UeyH%2Fuploads%2FoYCLNCOlzu3dzzFZ1M58%2Fimage.png?alt=media&amp;token=a8e3a4bb-2a7b-4912-adfd-5d4f871057e1" alt="" data-size="original">
{% endhint %}

{% hint style="success" %}
本エラーは、i-Repo Designerで「EXCELのCOM参照を使用してEXCELファイルを取り込む」もしくは「Excel定義入出力：取込時に互換モードを使用する」がオンの場合に発生します。
{% endhint %}

### **回避方法**

本エラーを回避する方法は下記です。

#### **計算式を記述したセル周辺（スピル表示されたセル）に、スペース等の値を入力する**

本来スピル表示される範囲に何らかの値が入力されている場合、スピル表示されません。\
これは「スピルしない」状態ではなく「スピル表示がブロックされた」状態です。計算式には「#スピル!」のエラーが表示されますが、INDEX関数の行番号/列番号に正しい値が入力されることでエラーが解消され、正しい値が返されます。

<div align="left"><figure><img src="https://3237210363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd8X0mqwp3tAAJZM8UeyH%2Fuploads%2FqE4YCL5BV0IyuyiUzM2a%2Fimage.png?alt=media&amp;token=ae810728-6cff-482b-9cb6-ff384f5228d3" alt="" width="523"><figcaption></figcaption></figure></div>

#### **引数となるセルにスペース等の値を入力する**

行番号/列番号として指定しているセルに、スペース等、何らかの値を入力します。\
これらのセルはクラスター設定がされているため、i-Repo Designer取り込み時にセルの入力値はPDF化されて背景画像となり、該当クラスターの値は空白になります。計算式には「#VALUE!」のエラーが表示されますが、INDEX関数の行番号/列番号に正しい値が入力されることでエラーが解消され、正しい値が返されます。

<figure><img src="https://3237210363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd8X0mqwp3tAAJZM8UeyH%2Fuploads%2FCDNDK8oF8ARazVTOBWlj%2Fimage.png?alt=media&amp;token=6641d918-187c-4f35-b806-d371a9925a4a" alt=""><figcaption></figcaption></figure>

### **EXCEL定義出力時の注意点** <a href="#kurasutnonoi" id="kurasutnonoi"></a>

Excel帳票定義上でスピル表示がされている、もしくは、計算結果がスピル表示に関連するエラーとなっている計算式を i-Repo Designer に取込み、その帳票定義を i-Repo Designer からEXCEL定義出力した場合、該当の計算式に「@」が付与されます。

* **i-Repo Designer 取り込み前**

  <div align="left"><figure><img src="https://3237210363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd8X0mqwp3tAAJZM8UeyH%2Fuploads%2Fyb6AOY3pRANwIQmobSJT%2Fimage.png?alt=media&amp;token=612ceeba-a844-4391-8989-cba443849b9d" alt="" width="523"><figcaption></figcaption></figure></div>

* **i-Repo Designer からEXCEL定義出力した後**

  <div align="left"><figure><img src="https://3237210363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fd8X0mqwp3tAAJZM8UeyH%2Fuploads%2Fz7lpw0QgjV8Yt97UmGks%2Fimage.png?alt=media&amp;token=d3c385e0-986b-4a72-bea8-c100f5da6775" alt="" width="527"><figcaption></figcaption></figure></div>

**INDEX関数内でスピル表示を回避する目的に限り**、「@」が付与された計算式を i-Repo Designer に取り込むことが可能です。<br>

{% hint style="warning" %}
**【注意】**

「@」が付与された計算式全てが正常に取り込めることを、i-Repo Designer では担保しておりません。

計算式内での「@」記述は、**INDEX関数内でスピル表示を回避する目的に限り**ご使用いただけます。それ以外の目的で、計算式に「@」を使用しないでください。
{% endhint %}
