以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何将表一汇总到表二里面  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=127455)

--  作者:gslxgl
--  发布时间:2018/11/14 14:59:00
--  如何将表一汇总到表二里面
如下表,能不能将表一的数据汇总到表二里面,汇总数据为红色的数据?如果表一里面还有其它规模,表二的列名称还能增加吗?
图片点击可在新窗口打开查看此主题相关图片如下:7u0gr2qfpb@u9_d3w8}p$}g.png
图片点击可在新窗口打开查看

--  作者:gslxgl
--  发布时间:2018/11/14 15:21:00
--  
直接汇总生成表二的格式也可以
--  作者:gslxgl
--  发布时间:2018/11/14 16:19:00
--  
这个是不是不能实现?
--  作者:有点甜
--  发布时间:2018/11/14 16:21:00
--  

1、具体的项目发上来测试;

 

2、你的问题是如何拆分一段字符串,如【土建120平方,安装12万元】,拆分各个项目和资金?


--  作者:gslxgl
--  发布时间:2018/11/14 16:22:00
--  
是呀


--  作者:gslxgl
--  发布时间:2018/11/14 16:25:00
--  
拆分后交叉汇总得到表二的汇总数据
--  作者:gslxgl
--  发布时间:2018/11/14 16:43:00
--  
根据表a得到表b
--  作者:gslxgl
--  发布时间:2018/11/14 16:44:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


--  作者:gslxgl
--  发布时间:2018/11/14 17:00:00
--  

 

[此贴子已经被作者于2018/11/14 17:21:34编辑过]

--  作者:有点甜
--  发布时间:2018/11/14 17:40:00
--  

1、先拆分各个项目,参考代码

 

Dim str As String = "土建100平方米50万元,装修50平方米30万元,安装80万元"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=土建|土建[0-9]+平方米)[0-9]+(?=万元)")
If mc.count > 0 Then
    msgbox(mc(0).value)
End If
mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=装修|装修[0-9]+平方米)[0-9]+(?=万元)")
If mc.count > 0 Then
    msgbox(mc(0).value)
End If
mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=安装|安装[0-9]+平方米)[0-9]+(?=万元)")
If mc.count > 0 Then
    msgbox(mc(0).value)
End If

 

 


2、写成动态的方式,如

 

\'\'\'
Dim str As String = "土建100平方米50万元,装修50平方米30万元,安装80万元"
For Each s As String In str.split(",")
    Dim mc = System.Text.RegularExpressions.Regex.Matches(s, ".+?(?=[0-9]+)")
    If mc.count > 0 Then
        Dim xm = mc(0).value
        msgbox(xm)
        mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=" & xm & "|" & xm & "[0-9]+平方米)[0-9]+(?=万元)")
        If mc.count > 0 Then
            msgbox(mc(0).value)
        End If
    End If
Next

 

 


3、动态生成表,统计数据

 

\'\'\'
Dim dic2 As new Dictionary(of String, object)
Dim xms As new List(of String)
For Each dr As DataRow In DataTables("表A").Select("年份 is not null")
    Dim str As String = dr("项目规模")
    Dim year As String = cdate(dr("年份")).year
    If dic2.ContainsKey(year) = False Then
        Dim dic As new Dictionary(of String, Double)
        dic2.Add(year, dic)
    End If
    Dim dic1 As Dictionary(of String, Double) = dic2(year)
    For Each s As String In str.split(",")
        Dim mc = System.Text.RegularExpressions.Regex.Matches(s, ".+?(?=[0-9]+)")
        If mc.count > 0 Then
            Dim xm = mc(0).value
            If xms.Contains(xm) = False Then
                xms.add(xm)
            End If
            mc = System.Text.RegularExpressions.Regex.Matches(str, "(?<=" & xm & "|" & xm & "[0-9]+平方米)[0-9]+(?=万元)")
            If mc.count > 0 Then
                If dic1.ContainsKey(xm) = False Then
                    dic1.Add(xm,mc(0).value)
                Else
                    dic1(xm) += mc(0).value
                End If
            End If
        End If
    Next
Next
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("年份", Gettype(String), 32)
For Each xm As String In xms
    dtb.AddDef(xm, Gettype(Double))
Next
dtb.Build()
Dim t As Table = Tables("统计")
For Each key As object In dic2.Keys
    Dim nr As Row = t.addnew
    nr("年份") = key
    For Each xm As String In xms
        nr(xm) = dic2(key)(xm)
    Next
Next
MainTable=t

 

[此贴子已经被作者于2018/11/14 17:40:30编辑过]