Partition 函数
更新:2007 年 11 月
返回一个字符串,该字符串表示包含某个数字的计算范围。
Public Function Partition( _
ByVal Number As Long, _
ByVal Start As Long, _
ByVal Stop As Long, _
ByVal Interval As Long _
) As String
参数
Number
必需。Long。要在一个计算范围中找到的整数。Start
必需。Long。用于指示计算范围组的开始位置的整数。Start 不能小于 0。Stop
必需。Long。用于指示计算范围组的结束位置的整数。Stop 不能小于或等于 Start。Interval
必需。Long。用于指示在 Start 和 Stop 之间计算的每个范围的大小的整数。Interval 不能小于 1。
异常
异常类型 |
错误号 |
条件 |
---|---|---|
Start 小于 0、Stop 小于等于 Start 或 Interval 小于 1。 |
如果正在升级使用非结构化错误处理方式的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象) 比较错误号。)然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述 替换这种错误控制。
备注
Partition 函数计算一组数值范围,每个范围包含由 Interval 指定数目的值。第一个范围以 Start 开始,最后一个范围以 Stop 结束。然后 Partition 函数标识哪个范围包含 Number,并返回一个描述该范围的字符串。该范围在字符串中表示为“lowervalue:uppervalue”,其中范围的低端 (lowervalue) 与高端 (uppervalue) 之间用冒号 (:) 分隔。
如果必要,Partition 函数可在 lowervalue 和 uppervalue 之前插入前导空格,以使此二者与该值的字符串表示形式具有相同的字符个数 (Stop + 1)。这可以确保,当利用若干 Number 值使用 Partition 函数的输出时,在后面的任何排序操作中将能够正确地处理结果文本。
下表显示使用三组 Start、Stop 和 Interval 计算的范围的一些示例字符串。“第一个范围”列和“最后一个范围”列显示在给定 Start 和 Stop 值时可能的最低和最高范围。“第一个范围前”和“最后一个范围后”列分别显示为 Number 值返回的小于 Start 和大于 Stop 的字符串。
Start |
Stop |
Interval |
第一个范围前 |
第一个范围 |
最后一个范围 |
最后一个范围后 |
---|---|---|---|---|---|---|
0 |
99 |
5 |
" : -1" |
" 0: 4" |
" 95: 99" |
"100: " |
20 |
199 |
10 |
" : 19" |
" 20: 29" |
"190:199" |
"200: " |
100 |
1010 |
20 |
" : 99" |
" 100: 119" |
"1000:1010" |
"1011: " |
在前面的表中,第三行显示当 Start 和 Stop 定义了一组不能被 Interval 均分的数时的结果。最后一个范围以 Stop 结束,其长度仅有 11 个数,尽管此时 Interval 为 20。
如果 Interval 为 1,则不管 Start 和 Stop 参数如何,范围都是“Number:Number”。例如,如果 Number 是 267,Stop 是 1000,Interval 是 1,则 Partition 返回“267: 267”。
Partition 在构造数据库查询时非常有用。可以创建一个 SELECT 查询以显示有多少份订单出现在各种值范围内(例如,订单的发票值为从 1 到 1000、从 1001 到 2000,等等)。
示例
下面的示例设置从 1950 年到 2049 年之间以十年计的一系列范围。它在适当范围内查找 year 的值,并返回显示范围的 String 值。例如,如果 year 的值为 1984,Partition 将返回“1980:1989”。
Dim year As Long = 1984
' Assume the value of year is provided by data or by user input.
Dim decade As String
decade = Partition(year, 1950, 2049, 10)
MsgBox("Year " & CStr(year) & " is in decade " & decade & ".")
要求
**模块:**Interaction
**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)