以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  除法进一法如何实现  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196523)

--  作者:timber83
--  发布时间:2025/5/9 10:44:00
--  除法进一法如何实现
有两列,列1,列2,列3,要求【列1】除以【列2】小于等于3时,【列3】=1;小于等于6时,【列3】=2;小于等于9时,【列3】=3,,,,,,依次类推
问题1,这个能用表达式实现吗?如果能实现,该怎么编码?
问题2,这个能用其他方式实现吗?该如何编码


--  作者:有点蓝
--  发布时间:2025/5/9 10:55:00
--  
1、如果如果不是无限的比较,可以使用表达式
IIF(列2=0,null,IIF(列1/列2<=3,1,IIF(列1/列2<=6,2,IIF(…………))))


Select Case e.DataCol.Name
    Case
 "
列1","列2"
        
Dim dr As DataRow = e.DataRow
        
If dr("列2")<> 0 Then
dim d as double =  dr("列1") / dr("列2")
if d <=3 then
dr("列3") = 1
elseif d <=6 then
dr("列3") = 2
……
……
end if
        End If
End
 Select

--  作者:timber83
--  发布时间:2025/5/9 11:08:00
--  
这样要穷举。除法里面有进一法,我查了一下有math.ceiling的方法,这个支持吗?
--  作者:有点蓝
--  发布时间:2025/5/9 11:25:00
--  
不支持。如果是无限的比较,整个地球都无法解决这种问题,找外星人看会不会。如果是有限的,到哪里结束?
--  作者:y2287958
--  发布时间:2025/5/9 11:57:00
--  
For Each 行 As DataRow In DataTables("表A").DataRows
    Dim i As Double = 行("列1") / 行("列2")
    行("列31")=IIf(i Mod 3 = 0, i / 3, Math.Ceiling(i / 3)))
Next