7,765
社区成员
发帖
与我相关
我的任务
分享
Private Sub Command1_Click()
'这里是对产生的10个随机数进行计算
Dim a(10) As Integer
Dim i, j As Integer
Dim max, min As Integer
Dim maxi, minj As Integer
Dim temp As String
Randomize
'产生10个随机数
For i = 1 To 10
a(i) = Int(Rnd() * 100)
Next
max = a(1)
min = a(1)
For i = 2 To 10
'计算最小值及其位置
If min > a(i) Then
minj = i
min = a(i)
End If
'计算最大值及其位置
If max < a(i) Then
maxi = i
max = a(i)
End If
Next
'计算特征值所在位置
Dim k As Integer
Dim ProZhi As Integer
Dim ProLocal As Integer
ProZhi = 23 '这里设置特征值为23
For k = 1 To 10
If ProZhi = a(k) Then
ProLocal = k
End If
Next
For i = 1 To 10
temp = temp & a(i) & " "
Next
temp = "这10个数是:" & temp & "最大数" & max & "的位置在" & maxi & " " & "最小数" & min & "的位置在" & minj & " 特征值" & ProZhi & "的位置在" & ProLocal
Print temp
End Sub
Option Explicit
Private Sub Command1_Click()
Dim strDataLine As String '临时字符串变量,存放读取的一行数据
Dim aryDataLine() As String '临时的字符串数组,存放被分解的一行数据
Dim colDataAll As New Collection '集合,将分解好的一行行数据往里面塞
'--------------数据准备
Open "B:\test.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, strDataLine
'Debug.Print strDataLine
aryDataLine = Split(strDataLine, " ")
colDataAll.Add aryDataLine
Loop
Close #1
'第一组测试
Dim aryParam(1 To 4) As Single '存放最大、最小、两个特征值参数
Dim aryOutput(1 To 4) As String '接收输出的数组
'--------------参数准备
aryParam(1) = 5000: aryParam(2) = 3000: aryParam(3) = 0: aryParam(4) = 9999
'--------------调用,处理第1列
Call Test(colDataAll, aryParam, 1, aryOutput)
'--------------输出
Debug.Print "第一列参数:"; aryParam(1), aryParam(2), aryParam(3), aryParam(4)
Debug.Print "第一列输出:"; aryOutput(1), aryOutput(2), aryOutput(3), aryOutput(4)
Debug.Print
'第二组测试
'--------------参数准备
aryParam(1) = 1002.5: aryParam(2) = 1002.49: aryParam(3) = 1002.66: aryParam(4) = 1002.55
'--------------输出数组清空
aryOutput(1) = "": aryOutput(2) = "": aryOutput(3) = "": aryOutput(4) = "":
'--------------调用,处理第2列
Call Test(colDataAll, aryParam, 2, aryOutput)
'--------------输出
Debug.Print "第二列参数:"; aryParam(1), aryParam(2), aryParam(3), aryParam(4)
Debug.Print "第二列输出:"; aryOutput(1), aryOutput(2), aryOutput(3), aryOutput(4)
End Sub
'处理子过程
'colDataIn 按顺序塞入数据的集合
'aryPara 参数数组
'aryout 输出数组
'DataCol 需要处理哪一列数据,从1开始
Private Sub Test(ByVal colDataIn As Collection, ByRef aryPara() As Single, intDataCol As Integer, ByRef aryOut() As String)
Dim i As Integer
Dim sglMax As Single, sglMin As Single
Dim strdata
sglMax = aryPara(1): sglMin = aryPara(2)
For i = 1 To colDataIn.Count
strdata = colDataIn(i)(intDataCol - 1)
If UCase(strdata) <> "NULL" Then 'null数据不处理
If Val(strdata) >= aryPara(1) And Val(strdata) > sglMax Then
sglMax = Val(strdata)
aryOut(1) = i
End If
If Val(strdata) <= aryPara(2) And Val(strdata) < sglMin Then
sglMin = Val(strdata)
aryOut(2) = i
End If
If Val(strdata) = aryPara(3) And aryOut(3) = "" Then
aryOut(3) = i
End If
If Val(strdata) = aryPara(4) And aryOut(4) = "" Then
aryOut(4) = i
End If
End If
Next
If aryOut(1) <> "" Then aryOut(1) = Str(sglMax) & "-" & aryOut(1) Else aryOut(1) = "No"
If aryOut(2) <> "" Then aryOut(2) = Str(sglMin) & "-" & aryOut(2) Else aryOut(2) = "No"
If aryOut(3) <> "" Then aryOut(3) = Str(aryPara(3)) & "-" & aryOut(3) Else aryOut(3) = "No"
If aryOut(4) <> "" Then aryOut(4) = Str(aryPara(4)) & "-" & aryOut(4) Else aryOut(4) = "No"
End Sub
输出结果:
第一列参数: 5000 3000 0 9999
第一列输出: 5000.8-2 0-4 0-4 No
第二列参数: 1002.5 1002.49 1002.66 1002.55
第二列输出: 1002.66-30 1002.27-1 1002.66-30 1002.55-21
Dim strLine As String, strItem() As String
Open "your-file" For Input As #1
Do Until EOF(1)
Line Input #1, strLine
strItem = Split(Trim(strLine), " ")
‘在这里处理
Loop
Close #1
每一行读取后,被分成了 n 个字符串。n 就是文件的列数。
2 处理
就是将分隔开的字符串转换成浮点数,与你事先设置的基准值进行比较,然后按照你的规则输出信息。
你的预设值也要事前转换成浮点数。
可以是有条件比较,比如预设值为 NULL 就不执行。