Foxtable(狐表)用户栏目专家坐堂 → [求助] Excel报表汇总排序


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

主题:[求助] Excel报表汇总排序

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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
[求助] Excel报表汇总排序  发帖心情 Post By:2018/10/24 21:28:00 [只看该作者]

如何做到输出的汇总报表 按发生工序的先后进行汇总排序?


图片点击可在新窗口打开查看此主题相关图片如下:1qq图片20181024211532.png
图片点击可在新窗口打开查看

要用什么方法才能做到下面方式?


图片点击可在新窗口打开查看此主题相关图片如下:2qq图片20181024211532.png
图片点击可在新窗口打开查看
模板如下:

 


图片点击可在新窗口打开查看此主题相关图片如下:3qq图片20181024212721.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/24 22:25:00 [只看该作者]

 

需要添加辅助列处理,比如添加一个【最早日期】,相同工序的,赋值一个对应日期过去,然后根据最早日期分组、排序。

 


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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2018/10/24 23:32:00 [只看该作者]

谢谢

如果用代码导出表中处理汇总排序好的行要怎么写代码

我写的不能导出分组汇总行,请老师指正

 

 

 

Dim bh1 As String
If Tables("订单跟踪表").Current Is Nothing  Then
Return '当前表中无行时返回
Else
bh1= Tables("订单跟踪表").Current("订单表序号")
End If
If bh1="" Then '编号为空时返回
Return
End If

Tables("生产日报表").Filter=""
Tables("生产日报表").Filter="订单编号='" & bh1 & "'and 辅助工艺 =false"
Tables("生产日报表").Sort="起始时间"

Dim t As Table = Tables("生产日报表")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
'定义客户分组
g = New Subtotalgroup '定义一个新的分组
g.Aggregate = AggregateEnum.Sum '统计类型为求和
g.GroupOn = "工序" '分组列为客户
g.TotalOn = "实际产量" '统计数量和金额列
g.Caption = "{0} 小计" '设置标题
t.SubtotalGroups.Add(g) '加到分组集合中
t.Subtotal(True) '生成汇总模式

Dim Book As New XLS.Book(ProjectPath & "Attachments\产品跟踪数量单.xls")'调用模板
Dim fl As String = ProjectPath & "Reports\产品跟踪数量单.xls"
Book.Build() '生成细节区

Dim dt As Table = Tables("生产日报表") '提取并筛选流程表信息
Dim nms() As String = {"工序","日期","实际产量","机台","起始时间","结束时间","姓名"} '要导出的列名
Dim caps() As String = {"工序","生产日期","良品数量","不良可用数量","报废/丢失数量","机台","起始时间","结束时间","姓名"} '对应的列标题
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表

Dim n1 As Integer
For i1 As Integer=0 To Sheet.Rows.Count-1
Dim mz As String= Sheet(i1, 0).Value 
If mz.Contains("工序")
n1=i1+1 '返回工艺标题行
Exit For
End If
If i1>50 Then
MessageBox.Show("未找到表报的工序标题")
Exit For
End If
Next

For r As Integer = 0 To dt.Rows.Count - 1 '填入数据表的行数
    For c As Integer = 0 To nms.length -1
        'Sheet.Rows(r +4).Height = 40 '设置行的行高
       Select Case c
    Case 0,1,2
    Sheet(r +n1, c).Value = dt.rows(r)(nms(c)) '输入数据
    Case Else
    Sheet(r +n1, c+2).Value = dt.rows(r)(nms(c)) '输入数据
    End Select
    Next
Next

Book.Save(fl) '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()
dt.Filter = ""

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/24 23:37:00 [只看该作者]

改成比如

 

For r As Integer = 0 To dt.Rows.Count(true) - 1 '填入数据表的行数
    For c As Integer = 0 To nms.length -1
        'Sheet.Rows(r +4).Height = 40 '设置行的行高
       Select Case c
    Case 0,1,2
    Sheet(r +n1, c).Value = dt.rows(r, true)(nms(c)) '输入数据
    Case Else
    Sheet(r +n1, c+2).Value = dt.rows(r, true)(nms(c)) '输入数据
    End Select
    Next
Next


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


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2018/10/24 23:37:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:4qq图片20181024212721.png
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110816 积分:564024 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/25 8:52:00 [只看该作者]

取消模板里面的各种格式设置

 回到顶部