# For..next

for..next 控制语句是一个带有计数器的脚本迭代构造。指定的高低限值之间（含限值）的计数器变量的每个值均会执行由 for 和 next 限定的循环中的语句。

语法：

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

表达式 expr1、expr2 和 expr3 仅会在首次进入循环时进行求值。计数器变量的值可通过循环内的语句进行更改，但这并非出色的编程做法。

如果在循环内遇到 exit for 子句，则脚本执行会转移至表示循环结束的 next 子句之后的第一个语句。exit for 子句可通过选择性使用 when 或 unless 后缀变为有条件子句。

信息注释由于 for..next 语句是控制语句，并以分号或换行符结束，三个可能子句（for..to..step、exit for 和 next）中任意一个子句都不得跨越行边界。

参数：

For 参数

| 参数 | 说明 |
| --- | --- |
| counter | 一个变量名。如果 counter 在 next 之后指定，变量名必须与对应的 for 之后查找的变量名相同。 |
| expr1 | 一个表达式，可决定与应执行循环有关的 counter 变量的第一个值。 |
| expr2 | 一个表达式，可确定应执行循环的 counter 变量的最大值。 |
| expr3 | 一个表达式，可决定每执行一次循环 counter 变量增加的值。 |
| condition | 用于评估 True 或 False 的逻辑表达式。 |
| statements | 一个或多个 QlikView 脚本语句的任意组。 |

示例 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-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/For%20Each.htm)
* [Next](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Next.htm)
* [To](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/To.htm)
* [Exit](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Exit.htm)