VB 多条件筛选数据
举例数组:102025304056203012705055253537261062105015508045302522313641502022还有多个类似的文本,请问有什...
举例数组:
10 20 25
30 40 56
20 30 12
70 50 55
25 35 37
26 10 62
10 50 15
50 80 45
30 25 22
31 36 41
50 20 22
还有多个类似的文本,请问有什么方法从
这些文本中间 这些文本中间 这些文本中间 这些文本中间
筛选出自己想要的数据:分别以第一列和第三列的数作为条件 ,而且第一,三列的条件数据不一定在数据库中存在,如果不存在,就筛选最接近的数组!此问题也相当于查找数据,表述不清 ,请看举例
比如:从上面数据中筛选出一组数据,条件数据为(10,*,15.2),通过10和15.2筛选出结果为(最接近)(10,50,15)
比如:条件为(50.5,*,22.3) 筛选出数组为(50,20,22)
我是菜鸟,请回答尽量详尽!如果合适的答案,我会追分的!
难道真的没有高手来吗吗?帮帮我啊 急用!给我点思路也行啊 ,难道这么多分的问题 到最后还要关闭,没人要?我QQ272160626 在线等啊 展开
10 20 25
30 40 56
20 30 12
70 50 55
25 35 37
26 10 62
10 50 15
50 80 45
30 25 22
31 36 41
50 20 22
还有多个类似的文本,请问有什么方法从
这些文本中间 这些文本中间 这些文本中间 这些文本中间
筛选出自己想要的数据:分别以第一列和第三列的数作为条件 ,而且第一,三列的条件数据不一定在数据库中存在,如果不存在,就筛选最接近的数组!此问题也相当于查找数据,表述不清 ,请看举例
比如:从上面数据中筛选出一组数据,条件数据为(10,*,15.2),通过10和15.2筛选出结果为(最接近)(10,50,15)
比如:条件为(50.5,*,22.3) 筛选出数组为(50,20,22)
我是菜鸟,请回答尽量详尽!如果合适的答案,我会追分的!
难道真的没有高手来吗吗?帮帮我啊 急用!给我点思路也行啊 ,难道这么多分的问题 到最后还要关闭,没人要?我QQ272160626 在线等啊 展开
展开全部
把上面的数据保存成Txt文件,放在D: 根目录中。
代码如下。
===================
Option Explicit
Private Sub Form_Click()
Dim s As String, a(10, 2) As Byte, i As Byte
Open "d:\1.txt" For Input As 1
Do Until EOF(1)
Line Input #1, s
a(i, 0) = Val(Split(s)(0))
a(i, 1) = Val(Split(s)(1))
a(i, 2) = Val(Split(s)(2))
i = i + 1
Loop
Dim inp As String, b(2) As Single, j As Byte, sum As Single, min As Single, minj As Byte
min = 10000
b(0) = Val(InputBox("第一个数据,如果为*则输入0", , 0))
b(1) = Val(InputBox("第二个数据,如果为*则输入0", , 0))
b(2) = Val(InputBox("第三个数据,如果为*则输入0", , 0))
For j = 0 To i - 1
sum = IIf(b(0), Abs(a(j, 0) - b(0)), 0) + IIf(b(1), Abs(a(j, 1) - b(1)), 0) + IIf(b(2), Abs(a(j, 2) - b(2)), 0)
If sum < min Then min = sum: minj = j
Next
Print "最符合要求的是第" & minj + 1 & "个数据:" & a(minj, 0) & "," & a(minj, 1) & "," & a(minj, 2)
Close
End Sub
用(10,*,15.2),(50.5,*,22.3)测试通过。
代码如下。
===================
Option Explicit
Private Sub Form_Click()
Dim s As String, a(10, 2) As Byte, i As Byte
Open "d:\1.txt" For Input As 1
Do Until EOF(1)
Line Input #1, s
a(i, 0) = Val(Split(s)(0))
a(i, 1) = Val(Split(s)(1))
a(i, 2) = Val(Split(s)(2))
i = i + 1
Loop
Dim inp As String, b(2) As Single, j As Byte, sum As Single, min As Single, minj As Byte
min = 10000
b(0) = Val(InputBox("第一个数据,如果为*则输入0", , 0))
b(1) = Val(InputBox("第二个数据,如果为*则输入0", , 0))
b(2) = Val(InputBox("第三个数据,如果为*则输入0", , 0))
For j = 0 To i - 1
sum = IIf(b(0), Abs(a(j, 0) - b(0)), 0) + IIf(b(1), Abs(a(j, 1) - b(1)), 0) + IIf(b(2), Abs(a(j, 2) - b(2)), 0)
If sum < min Then min = sum: minj = j
Next
Print "最符合要求的是第" & minj + 1 & "个数据:" & a(minj, 0) & "," & a(minj, 1) & "," & a(minj, 2)
Close
End Sub
用(10,*,15.2),(50.5,*,22.3)测试通过。
展开全部
50.22
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个允许的误差最大多大呢?
可以hi me
可以hi me
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学习中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有点复杂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询