设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1630|回复: 4
打印 上一主题 下一主题

[模块/函数] 求教两数组值对比替换函数

[复制链接]
跳转到指定楼层
1#
发表于 2012-5-16 18:55:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位大侠,如何完成?
一个字符串中的两个数字分别在数组中找出大于它最小值
     例:155*265
     数组:205, 305, 355, 405, 455, 505, 605
     205-155=50
     305-265=40
     结果:305*155

Public Function UpDataStr() As String
    Dim ArrA()
    Dim ArrB()
    Dim S As String
    S = "565*400"
    ArrA = Array(205, 305, 355, 405, 455, 505, 605)
    ArrB = Split(S, "*")
    For I = LBound(ArrA) To UBound(ArrA)
        '对比 ...........
    Next
    '想要的结果是:405*565
End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2012-5-16 19:36:08 | 只看该作者
还是有点问题,如果其中一个数字大于数组中最大值,处理不了,哎,再想想。。。


Public Function UpDataStr() As String
    Dim StrTemp As String
    Dim StrTemp1 As String
    Dim ArrA()
    Dim ArrB() As String
    Dim S As String
    S = "155*300"
    ArrA = Array(205, 305, 355, 405, 455, 505, 605)
    ArrB = Split(S, "*")
    For i = LBound(ArrA) To UBound(ArrA)
        If ArrA(i) > ArrB(0) Then
           K = ArrA(i) - ArrB(0)
           StrTemp = ArrA(i) & "*" & ArrB(1)
           Exit For
        End If
    Next
     For i = LBound(ArrA) To UBound(ArrA)
        If ArrA(i) > ArrB(1) Then
           K1 = ArrA(i) - ArrB(1)
           StrTemp1 = ArrA(i) & "*" & ArrB(0)
           Exit For
        End If
    Next
    If K > K1 Then
       UpDataStr = StrTemp1
    Else
        UpDataStr = StrTemp
    End If
    Debug.Print UpDataStr
End Function
3#
发表于 2012-5-16 20:40:02 | 只看该作者
本帖最后由 koutx 于 2012-5-16 20:48 编辑

Public Function UpDataStr() As String
    Dim StrTemp As String
     Dim ArrA()
    Dim ArrB() As String
    Dim S As String
    S = "155*300"
    ArrA = Array(205, 305, 355, 405, 455, 505, 605)
    ArrB = Split(S, "*")

Dim k As Integer
Dim k1 As Integer
For j=1 To UBound(ArrB)
   For i = 1 To UBound(ArrA)
        If ArrA(i) >= ArrB(j) Then
            If j = 1 Then
               K = ArrA(i) - ArrB(j)
            Else
               k1= ArrA(i) - ArrB(j)
            End If
            Exit For
        Else
            If i = UBound(ArrA)        
              If j = 1 Then
                 k=""
              Else
                 k1=""
              End If
           End If
        End If
    Next
Next
UpDataStr = k & "*" & k1

'*左右为空表明无符合要求的数据
End Function
4#
发表于 2012-5-17 07:31:18 | 只看该作者
不知这种情况实际中用于什么地方,有什么作用,是考试用的吗?
5#
 楼主| 发表于 2012-5-17 10:12:26 | 只看该作者
谢谢各位,主要是用于实际生产中根据订单尺寸合理选用材料用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 12:38 , Processed in 0.092311 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表