以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  if问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129767)

--  作者:jick0526
--  发布时间:2019/1/5 17:45:00
--  if问题
老师,请问下,如果A列一样,B列数值大的,C列会自动输入正确,如果A列就单个,例如电冰箱,那默认认就是最大的,例如下面的表格,代码要怎么写,谢谢!

 A列    B列  C列  
 电视  100    
   电视   150   正确
   洗衣机   70   正确
   洗衣机   19   
   电冰箱   300   正确


--  作者:有点甜
--  发布时间:2019/1/6 23:43:00
--  

试试

 

http://www.foxtable.com/webhelp/scr/2382.htm

 


--  作者:jick0526
--  发布时间:2019/1/7 21:28:00
--  
老师,示例看了,不会弄,麻饭能帮我写下代码吗?谢谢1
--  作者:有点蓝
--  发布时间:2019/1/7 21:57:00
--  
datacolchanged事件

Select Case e.DataCol.Name
    Case "A列","B列"
        If e.DataTable.Compute("max(B列)","A列=\'" & e.DataRow("A列") & "\'") = e.DataRow("B列") Then
            e.DataRow("C列") = "正确"
        Else
            e.DataRow("C列") = Nothing
        End If
End Select

--  作者:jick0526
--  发布时间:2019/1/7 22:54:00
--  
老师,上面的代码有个问题,比如电视的B列最大值是150,然后右边出现正确,但当我增加一行电视行,并且右边B列的最大值输入300后,这时会出现150和300的C列都会出现“正确”我是想永远只有最大值的C列才会出现正确,其他的为空,当有更大值出现时,原先最大值的C列的“正确”会自动消失

第二个,当A列,B列都不为空时,才会执行代码

麻烦老师帮我改下,谢谢!

--  作者:有点蓝
--  发布时间:2019/1/7 23:23:00
--  
Select Case e.DataCol.Name
    Case "A列","B列"
        e.DataTable.ReplaceFor("C列",Nothing,"A列=\'" & e.DataRow("A列") & "\'")
        Dim dr As DataRow = e.DataTable.Find("A列=\'" & e.DataRow("A列") & "\'","B列 desc")
        If dr IsNot Nothing Then
            dr("C列") = "正确"
        End If
End Select
[此贴子已经被作者于2019/1/8 21:10:16编辑过]

--  作者:jick0526
--  发布时间:2019/1/8 1:30:00
--  
老师,上面的代码,我如果用复制的方式不行,我在B列复制3个数据进去,然后在A列再复制3个同样的代号进去,完了之后C列不会识别,在B列最大数据那行不显示“正确”,而是只会在最后一行显示“正确”,还有一个问题,我A列只要一有数据,C列就自动输入正确了,我是想要A列B列都有数据之后,C列才开始识别,只要A列B列任何一列有空数据的话,那么对应行的C列都是空的,麻烦老师帮我改下,谢谢!
--  作者:有点甜
--  发布时间:2019/1/8 9:02:00
--  

代码没问题,请把你的B列改成数值列,不要用字符列。

 

不然,请上传具体实例测试。


--  作者:jick0526
--  发布时间:2019/1/8 19:13:00
--  
老师,我已上传实例,麻烦帮我测试下,谢谢!
--  作者:jick0526
--  发布时间:2019/1/8 19:14:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:实例测试.rar