# For..next

for..next 控制陳述式是包含計數器的指令碼反覆運算建構。將對於所指定上下限之間的各個 counter 變數值，執行 for 與 next 所括住迴圈之內的陳述式。

語法：

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

只有在第一次進入迴圈時，才會評估 expr1、expr2 和 expr3 運算式。迴圈內的陳述式可變更 counter 變數的值，不過在程式設計上這不見得是好方法。

如果 exit for 子句出現在迴圈中，指令碼的執行將傳輸到 next 子句後的第一個陳述式，代表迴圈結束。選用 when 或 unless 後置詞，即可將 exit for 子句設定為條件子句。

資訊備註由於 for..next 陳述式是控制陳述式，因而會以分號或行結尾來結束，所以這三個可能的子句 (for..to..step、exit for、與 next) 都不能超過行邊界。

引數：

引數

| 引數 | 描述 |
| --- | --- |
| counter | 變數名稱。如果在 next 之後指定 counter，它的變數名稱必須與對應的 for 之後出現的變數名稱相同。 |
| expr1 | 決定應對其執行迴圈的第一個 counter 變數值所用的運算式。 |
| expr2 | 決定應對其執行迴圈的最後一個 counter 變數值所用的運算式。 |
| expr3 | 決定每次執行迴圈時，表示 counter 變數遞增的值所用的運算式。 |
| condition | 評估為 True 或 False 的邏輯運算式。 |
| statements | 是一或多個 Qlik Sense 指令碼陳述式的任何群組。 |

範例 1: 載入一連串檔案

`// LOAD 
 files file1.csv..file9.csv` `for a=1 
 to 9`

> `LOAD * from 
>  file$(a).csv;`

`next`

範例 2: 載入隨機數目的檔案

在此範例中，我們假設存在下列資料檔案 x1.csv、x3.csv、x5.csv、x7.csv 和 x9.csv。使用 `if rand( 
 )<0.5 then` 條件在隨機點停止載入。

`for counter=1 
 to 9 step 2`

> `set filename=x$(counter).csv;` `if rand( 
>  )<0.5 then`
>
> > `exit for 
> >  unless counter=1`
>
> `end if` `LOAD  a,b 
>  from $(filename);`

`next`

## 瞭解更多資訊

* [For each..next](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/For%20Each.htm)
* [Next](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Next.htm)
* [To](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/To.htm)
* [Exit](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Exit.htm)