Foxtable(狐表)用户栏目专家坐堂 → 请教如何设计这个表达式


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

主题:请教如何设计这个表达式

帅哥哟,离线,有人找我吗?
大红袍
  181楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/30 11:16:00 [只看该作者]

你可以把控制的替换成某个字符后计算,如

 

DataTables("").ReplaceFor("产品名称", "特殊产品", "产品名称 Is Null")


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  182楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/5/30 12:31:00 [只看该作者]

以下是引用大红袍在2016/5/30 11:11:00的发言:

 

空值的算一种产品这样计算?

冲压车间的分配金额等于同天、产品名称相同或为空值、生产形式为同一集体形式的计件工资之和除于该组不重复人数。
[此贴子已经被作者于2016/5/30 12:32:34编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/30 12:35:00 [只看该作者]

看181楼,把空值替换成一个特殊的产品名称

 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  184楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/5/30 14:05:00 [只看该作者]

以下是引用大红袍在2016/5/30 12:35:00的发言:
看181楼,把空值替换成一个特殊的产品名称

    能否把空值替换成该行产品名称所对应的上一行产品名称?


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  185楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/5/30 14:08:00 [只看该作者]

    在EXCEL中只需选定空值,在选定的第一个空值单元格输入等于上一个单元格同按CTIL+回车,就能实现空值自动取值。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/30 14:20:00 [只看该作者]

参考代码

 

Dim t As Table = Tables("表A")
For i As Integer = 1 To t.rows.count-1
    If t.rows(i).isnull("第一列") Then
        t.rows(i)("第一列") =t.rows(i-1)("第一列")
    End If
Next


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  187楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/5/30 14:43:00 [只看该作者]

    应该怎么改?我把附助列改到临时列了,替换产品名称不知怎么写:

For Each ary() As String In DataTables("冲压车间工资表").GetValues("日期|产品名称|生产形式", "日期 is not null and 生产形式 <> '个人'")
Dim t As Table = Tables("冲压车间工资表")
For i As Integer = 1 To t.rows.count-1
    If t.rows(i).isnull("产品名称") Then
        t.rows(i)("产品名称") =t.rows(i-1)("产品名称")
    End If
Next
    'DataTables("冲压车间工资表").ReplaceFor("产品名称", "特殊产品", "产品名称 Is Null")
    Dim drs As List(Of DataRow) = DataTables("冲压车间工资表").Select("日期=#" & ary(0) & "# and 产品名称='" & ary(1)  & "' and 生产形式='" & ary(2) & "'")
    Dim sum As Double = 0
    Dim count As Integer = 0
    Dim ls As new List(Of String)
    If DataTables("冲压车间工资表").DataCols.Contains("备注1") = False Then
        DataTables("冲压车间工资表").DataCols.add("备注1", Gettype(String))
    End If
    For Each dr As DataRow In drs
        Dim str As String = dr("姓名")
        If ls.Contains(str) = False Then
            count += 1
            ls.add(str)
            dr("备注1") = dr("备注1").replace("重复", Nothing)
        Else
            dr("备注1") = "重复" & dr("备注1").replace("重复", Nothing)
        End If
    Next
    For Each dr As DataRow In drs
        Dim fdr As DataRow = DataTables("价格表").find("产品名称 = '" & dr("产品名称") & "' and 工序 = '" & dr("生产工序") & "'")
        If fdr IsNot Nothing
            dr("单价") = fdr("单价")
            sum += dr("数量") * dr("单价")
        End If
    Next
    For Each dr As DataRow In drs
        If dr("备注1") Like "*重复*" Then
            dr("分配金额") = Nothing
        Else
            dr("分配金额") = format(sum/count, "0.00")
        End If
    Next
Next
For Each dr As DataRow In DataTables("冲压车间工资表").Select("生产形式 = '个人'")
    dr("分配金额") = dr("数量") * dr("单价")
Next

Tables("冲压车间工资表").filter = ""
Tables("冲压车间工资表").Sort = "日期,产品名称,生产形式"
Tables("冲压车间工资表").Filter = "日期 is null"


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/30 14:44:00 [只看该作者]

红色代码不用写的啊。只需要把这段代码写在最开头

 

Dim t As Table = Tables("冲压车间工资表")
For i As Integer = 1 To t.rows.count-1
    If t.rows(i).isnull("产品名称") Then
        t.rows(i)("产品名称") =t.rows(i-1)("产品名称")
    End If
Next


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  189楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/5/30 15:44:00 [只看该作者]

以下是引用大红袍在2016/5/30 14:44:00的发言:

红色代码不用写的啊。只需要把这段代码写在最开头

 

Dim t As Table = Tables("冲压车间工资表")
For i As Integer = 1 To t.rows.count-1
    If t.rows(i).isnull("产品名称") Then
        t.rows(i)("产品名称") =t.rows(i-1)("产品名称")
    End If
Next

生产形式为个人或日期为空的产品名称列空白的不用替换为上行产品名称。


 回到顶部
美女呀,离线,留言给我吧!
意悠心轻
  190楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:512 积分:3358 威望:0 精华:0 注册:2016/1/31 16:04:00
  发帖心情 Post By:2016/5/30 16:40:00 [只看该作者]

上面的公式连最下面的空白行都自动填充了,还有生产形式为个人的不用填充的。

 回到顶部