以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  字符串比较问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=50523)

--  作者:ydbi
--  发布时间:2014/5/8 11:28:00
--  字符串比较问题
 Sheet(10, 2).Value = Tables("完成情况表").Compute("sum(完成额)","[年度] Like \'*"& hz1 &"*\'")
这样统计条件是:[年度]中包含hz1的值。
我想要的统计条件是:[年度]在hz1值之中。怎么写? 

--  作者:有点甜
--  发布时间:2014/5/8 11:31:00
--  

 hz1的值是什么?

 

 只能这样 Sheet(10, 2).Value = Tables("完成情况表").Compute("sum(完成额)","[年度] in (2004, 2005, 2009, 2014)")


--  作者:ydbi
--  发布时间:2014/5/8 11:38:00
--  
hz1的值是个变量,可能是 hz1 = ”2009年进度,2010年进度,2011年进度,2012年进度,2013年进度“,也可能是其中1个或几个或全部。
--  作者:有点甜
--  发布时间:2014/5/8 11:39:00
--  
 年度列,是数值类似 2009?
--  作者:Bin
--  发布时间:2014/5/8 11:39:00
--  
看2楼,使用 IN的方式

只能这样 Sheet(10, 2).Value = Tables("完成情况表").Compute("sum(完成额)","[年度] in (\'2004年度\', \'2005年度\', \'2009年度\', \'2014年度\')")

--  作者:ydbi
--  发布时间:2014/5/8 11:43:00
--  
IN 后面括号中只能用常量?如果是变量,怎么写?就是直接在括号中写hz1,怎么写?
--  作者:Bin
--  发布时间:2014/5/8 11:44:00
--  
你自己拼接生成一下就好了.

具体要看你变量是什么样的,再做具体的字符串处理.

总之之后拼接生成的结果是那个格式即可.

--  作者:有点甜
--  发布时间:2014/5/8 11:46:00
--  
以下是引用ydbi在2014-5-8 11:43:00的发言:
IN 后面括号中只能用常量?如果是变量,怎么写?就是直接在括号中写hz1,怎么写?

 

处理一下

 

Dim hz1 As String = "2009年进度,2010年进度,2011年进度,2012年进度,2013年进度"
Dim reg As new System.Text.RegularExpressions.Regex("[0-9]+")
Dim mc As object = reg.Matches(hz1)
Dim str As String = ""
For i As Integer = 0 To mc.count - 1
    str &= "\'" & mc(i).Value & "\',"
Next

str = str.Trim(",")
Msgbox(str)

Sheet(10, 2).Value = Tables("完成情况表").Compute("sum(完成额)","[年度] in (" & str & ")")


--  作者:lsy
--  发布时间:2014/5/8 11:53:00
--  
Dim Hz As String = "1999年进度"
Dim sum As Double
sum = Tables("订单").Compute("sum(单价)","SubString(Convert([日期],\'System.String\'),1,4) = " & Left(Hz,4))
Output.Show(sum)

--  作者:ydbi
--  发布时间:2014/5/8 11:58:00
--  
谢谢