Foxtable(狐表)用户栏目专家坐堂 → 如何实现取最小值?


  共有3346人关注过本帖树形打印复制链接

主题:如何实现取最小值?

帅哥哟,离线,有人找我吗?
lin98
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
如何实现取最小值?  发帖心情 Post By:2023/6/19 15:50:00 [只看该作者]

如何实现表A的第一列第行数据对表B的第一列的所有数据行进行相除,如表C的数据将余数(表CT第五列)最小的数据赋值到表A?
注:
1.表A,表B,表C之间都关联字段,如何实现?
2.表A,表B,表C之间如果没有关联字段,就无法实现计算,那就随便加个临时列临时编号进行统计,如何实现?

图片点击可在新窗口打开查看此主题相关图片如下:取最小值.jpg
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/19 16:00:00 [只看该作者]

直接遍历2个表就行了

for each ar as row in tables("表A").rows
dim min as integer = 999999
for each br as row in tables("表B").rows
dim a as integer = br("第一列") mod ar("第一列")
min = math.min(min,a)
next
ar("第四列") = min 
next

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/6/19 16:27:00 [只看该作者]

For Each ar As Row In Tables("表A").rows
    Dim min As Integer = 999999
    For Each br As Row In Tables("表B").rows
        Dim a As Integer = br("第一列") Mod ar("第一列")
        min = math.min(min, a)
    Next
    ar("第二列") = br("第一列") / ar("第一列")
    ar("第三列") = ar("第一列") * (br("第一列") / ar("第一列"))
    ar("第四列") = min
    
Next


表A的第二列、第三列没计算,加上红字代码,报错 br未声明,它可能因保持无法访问,如何实现一楼表A的第二列、第三列的值?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/19 16:40:00 [只看该作者]

和计算余数的方法完全一样啊,定义多几个变量,在第二个for循环里计算

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/6/19 17:26:00 [只看该作者]

For Each ar As Row In Tables("表A").rows
    Dim min As Integer = 999999
    Dim min2 As Integer = 999999
    Dim min3 As Integer = 999999
    For Each br As Row In Tables("表B").rows
        Dim a As Integer = br("第一列") Mod ar("第一列")
        min = math.min(min, a)
        
        Dim b As Integer = br("第一列") / ar("第一列")
        min2 = math.min(min, b)
        Dim c As Integer = ar("第一列") * (br("第一列") / ar("第一列"))
        min3 = math.min(min, c)
    Next
    ar("第二列") = min2
    ar("第三列") = min3
    ar("第四列") = min
    
Next

计算结果,与一楼表A不一样,如图

图片点击可在新窗口打开查看此主题相关图片如下:最小值-2.jpg
图片点击可在新窗口打开查看




现二表都增加类别,如何实现表A的“第一列,类别列”每行数据对表B的“第一列,类别列”的所有数据行进行相除,计算表A的"第二列、第三列、第四列"的值?如下图


图片点击可在新窗口打开查看此主题相关图片如下:取最小值-3.jpg
图片点击可在新窗口打开查看



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/19 17:31:00 [只看该作者]

min2 = math.min(min2 , b)

 回到顶部
帅哥哟,离线,有人找我吗?
lin98
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/6/19 18:03:00 [只看该作者]

For Each ar As Row In Tables("表A").rows
    Dim min As Integer = 999999
    Dim min2 As Integer = 999999
    Dim min3 As Integer = 999999
    For Each br As Row In Tables("表B").rows
        Dim a As Integer = br("第一列") Mod ar("第一列")
        min = math.min(min, a)
        
        Dim b As Integer = br("第一列") / ar("第一列")
        min2 = math.min(min2, b)
        Dim c As Integer = ar("第一列") * (br("第一列") / ar("第一列"))
        min3 = math.min(min3, c)
    Next
    ar("第二列") = min2
    ar("第三列") = min3
    ar("第四列") = min
    
Next

上面代码执行后如图

图片点击可在新窗口打开查看此主题相关图片如下:取最小-5.jpg
图片点击可在新窗口打开查看

还是无法实现,表A的效果


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/19 19:58:00 [只看该作者]

只能是自己的计算公式有问题,既然"第三列"="第一列" * "第二列",其实和表B没有什么关系,直接计算就行,没有必要放中间循环了

ar("第三列") = ar("第列") * ar("第列")

 回到顶部