Foxtable(狐表)用户栏目专家坐堂 → 如何编写以下的计算


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

主题:如何编写以下的计算

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


加好友 发短信
等级:婴狐 帖子:24 积分:355 威望:0 精华:0 注册:2012/1/20 21:09:00
如何编写以下的计算  发帖心情 Post By:2012/5/24 21:06:00 [只看该作者]

如何编写以下的计算

1+2[备注]

在另一列中得出结果3

其中[]数据的是说明,里面的内容不参与计算


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/24 21:50:00 [只看该作者]

 Tables("ls").current("计算结果列") = Eval(Tables("ls").current("1+2[备注]列").split("[")(0))

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


加好友 发短信
等级:婴狐 帖子:24 积分:355 威望:0 精华:0 注册:2012/1/20 21:09:00
我有时不止一个 就不对了  发帖心情 Post By:2012/5/24 23:17:00 [只看该作者]

2+3[明天]+9[后]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/25 0:15:00 [只看该作者]

多少个都可以:

Dim x As String = "2+9[前天]+3[昨天]+9[今天后]+3[明天]+9[后天]+3[大后天] "
Dim ss As String() = x.split("[")
Dim n As Integer
Dim s As String
For i As Integer = 0 To ss.length-2
    If ss(i).contains("]") = False
        s = ss(i)
    Else
        s = s & ss(i).split("]")(1)
    End If
Next
output.show(eval(s))


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


加好友 发短信
等级:婴狐 帖子:24 积分:355 威望:0 精华:0 注册:2012/1/20 21:09:00
还有些问题  发帖心情 Post By:2012/5/25 20:14:00 [只看该作者]

谢谢你的回复
还有些问题

怎样第二列的计算结果是第三列的数据

我的计算式有几种情况的,根据你做的公式
2+3。。。。。。。。。。。错误提示
2+3[天天]
2+3[天天]+99[向上]
2+3[天天]+99。。。。。。。。。。。。。结果是5,应该是104
括号内的内容是数据的说明,但是不是所有情况要说明的
现在是红色字体的这种情况,还是不正确的

[此贴子已经被作者于2012-5-25 20:25:49编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/5/26 16:21:00 [只看该作者]

你不要一点点的加条件嘛,那样没人可以满足你的····


Dim x As String = "2+3[天天]+99+22[kk]+77+55[66]" 
Dim ss As String() = x.split("+")
Dim n As Integer
Dim s As String
For i As Integer = 0 To ss.length-1
    If ss(i).contains("[")
        s = s & left(ss(i),ss(i).LastIndexOf("[")) & " + " 

    Else
        s = s & ss(i) & " + "  

    End If
Next
output.show(eval(left(s,s.LastIndexOf("+")) ))


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


加好友 发短信
等级:婴狐 帖子:24 积分:355 威望:0 精华:0 注册:2012/1/20 21:09:00
还有些问题  发帖心情 Post By:2012/5/27 8:26:00 [只看该作者]

我以前用易表有个公式的套用上去就可以了,所有我原先以为,你给我例子我修改一下就可以了,但没想到易表和狐表差别那么大,我自己做不出来,麻烦你了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目36.table


我的思路就是,第一列是一个计算公式,有时候数据后面要加个[]来说明数据的来源,然后在第二列中汇总,数据有时候要在后面加[]来源,有时候是不用加的
总的思路就是,[]里面的内容是不参加计算为结果的
[此贴子已经被作者于2012-5-27 8:33:53编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/5/27 10:27:00 [只看该作者]

Dim x As String = "-111+(11+6[kkk]/36^2[kkk])"
Dim n1,n2 As Integer
Dim s1 As String

Do While x.Contains("[")  
   n1=x.LastIndexOf("[")  
   n2=x.LastIndexOf("]")   
   s1=x.SubString(n1,n2-n1+1) 
   x=x.Replace(s1,"")   
Loop

If "+-*/^".Contains(right(x,1)) Then
    x=Left(x,x.Length-1)
End If
output.show(Eval(x))  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目36.table


 回到顶部