Foxtable(狐表)用户栏目专家坐堂 → 怎么控制excel插入下面的列


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

主题:怎么控制excel插入下面的列

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/27 14:47:00 [显示全部帖子]

以下是引用xxfoxtable在2018/5/27 14:35:00的发言:

因为每个月都生成,加上日期列,怎么改一下代码?

 

没看懂你的意思。现在代码生成有什么问题?得到的结果和你想要得到的结果有什么区别?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/27 22:13:00 [显示全部帖子]

以下是引用xxfoxtable在2018/5/27 19:19:00的发言:
打算新建一个excel表,直接放里填数,怎么用代码新建?

 

参考

 

http://www.foxtable.com/webhelp/scr/1148.htm

 

http://www.foxtable.com/webhelp/scr/1144.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/28 14:58:00 [显示全部帖子]

excel表格的列数,最大是256列,超过是不行的。

 

要用vba处理,大致代码如下,没看懂你到底要实现什么,细节自己调整

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Add
Dim ws = Wb.WorkSheets(1)
ws.name = "test"
Dim dict As new Dictionary(of String,Integer)
Dim lst As List(Of String) = DataTables("日库存表").GetValues("英文名称")
Dim zimu As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Dim i As Integer = 0
Dim idx As Integer
Dim Formula As String = "="
Dim k As Integer
Dim km As Integer
For i = 0 To lst.Count - 1
    idx = i*7+1
    k = Math.Floor((idx+2) / 26) - 1
    km = (idx+2) Mod 26
    'Output.Show("k=" & k & ", km=" & km)
    If k< 0 Then
        Formula &=  zimu(km) & "{0}+"
    Else
        Formula &= zimu(k) & zimu(km) & "{0}+"
    End If
   
    k = Math.Floor((idx+3) / 26) - 1
    km = (idx+3) Mod 26
    If k< 0 Then
        Formula &=  zimu(km) & "{0}+"
    Else
        Formula &= zimu(k) & zimu(km) & "{0}+"
    End If
    dict.Add(lst(i),idx)
    ws.cells(0+1,idx+1).Value = lst(i)
    ws.cells(1+1,idx+1+1).Value = "出入库"
    ws.cells(1+1,idx+1+1).Value = "库存"
    ws.cells(1+1,idx+2+1).Value = "装卸费"
    ws.cells(1+1,idx+3+1).Value = "堆存费"
    ws.cells(1+1,idx+4+1).Value = "拆箱费"
    ws.cells(1+1,idx+5+1).Value = "出签费"
    ws.cells(1+1,idx+6+1).Value = "备注"
    'Dim Rg As MSExcel.Range = Ws.Range(ws.cells(1,idx+1).Address & ":" & ws.cells(1,idx+1+7).Address)
    'App.DisplayAlerts = False '加上此行可禁止弹出合并前的提示
    'Rg.Merge
    'Sheet.MergeCell(0,idx,1,7)
Next


idx = i*7+1
k = Math.Floor(idx / 26) - 1
km = idx Mod 26
If k< 0 Then
    Formula &=  zimu(km) & "{0}+"
Else
    Formula &= zimu(k) & zimu(km) & "{0}+"
End If
k = Math.Floor((idx+1) / 26) - 1
km = (idx+1) Mod 26
If k< 0 Then
    Formula &=  zimu(km) & "{0}+"
Else
    Formula &= zimu(k) & zimu(km) & "{0}+"
End If
k = Math.Floor((idx+2) / 26) - 1
km = (idx+2) Mod 26
If k< 0 Then
    Formula &=  zimu(km) & "{0}+"
Else
    Formula &= zimu(k) & zimu(km) & "{0}+"
End If
ws.cells(0+1,idx+1).Value = "装卸费"
Ws.Range(ws.cells(1,idx+1).Address & ":" & ws.cells(2,idx+1).Address).Merge
'Sheet.MergeCell(0,idx,2,1)
ws.cells(0+1,idx+1+1).Value = "堆存费"
Ws.Range(ws.cells(1,idx+2).Address & ":" & ws.cells(2,idx+2).Address).Merge
'Sheet.MergeCell(0,idx+1,2,1)
ws.cells(0+1,idx+2+1).Value = "拆箱费"
Ws.Range(ws.cells(1,idx+3).Address & ":" & ws.cells(2,idx+3).Address).Merge
'Sheet.MergeCell(0,idx+2,2,1)
ws.cells(0+1,idx+3+1).Value = "出签费"
Ws.Range(ws.cells(1,idx+4).Address & ":" & ws.cells(2,idx+4).Address).Merge
'Sheet.MergeCell(0,idx+2,2,1)
ws.cells(0+1,idx+4+1).Value = "仓储合计"
Ws.Range(ws.cells(1,idx+5).Address & ":" & ws.cells(2,idx+5).Address).Merge
'Sheet.MergeCell(0,idx+3,2,1)
Tables("日库存表").Sort = "日期"
Dim idx2 = 2
Formula = Formula.TrimEnd("+")
'Output.Show(Formula)
For Each r As Row In Tables("日库存表").Rows
    ws.cells(idx2+1,0+1).Value = r("日期")
    Dim j As Integer = dict(r("英文名称"))
   
    ws.cells(idx2+1,j+1).Value = r("出入库")
    ws.cells(idx+1,j+1+1).Value = r("库存数量")
    ws.cells(idx2+1,j+1+1).Value = r("装卸费")
    ws.cells(idx2+1,j+1+1).Value = r("仓储费")
   
    ws.cells(idx2+1,idx+1+1).Value = r("拆箱费")
    ws.cells(idx2+1,idx+2+1).Value = r("标签费")
   
   
    ws.cells(idx2+1,idx+3+1).Formula = Cexp(Formula,idx2+1)
    idx2 += 1
Next
'wb.Saveas("D:\报表\横向报表.xlsx")
app.visible = True
msgbox("生成完成!!")


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/28 16:33:00 [显示全部帖子]

1、对你的表格数据进行分组统计或者交叉统计

 

http://www.foxtable.com/webhelp/scr/0158.htm

 

http://www.foxtable.com/webhelp/scr/0165.htm

 

2、然后直接saveexcel或者如16楼导出数据

 

http://www.foxtable.com/webhelp/scr/0559.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/28 18:12:00 [显示全部帖子]

以下是引用xxfoxtable在2018/5/28 16:38:00的发言:
都统计完了, 就是往表格里填数(按日期,按产品名称)
[此贴子已经被作者于2018/5/28 16:38:16编辑过]

 

1、如果是交叉统计,得到交叉统计表以后,直接saveexcel就可以啊;

 

2、直接写代码处理也行

 

http://www.foxtable.com/webhelp/scr/2394.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/28 18:36:00 [显示全部帖子]

以下是引用xxfoxtable在2018/5/28 18:21:00的发言:
我这个和你说提示的不一样,不需要统计,都统计完了,直接填数就可以
[此贴子已经被作者于2018/5/28 18:21:41编辑过]

 

无语,必须分组统计或者交叉统计,不然怎么可能一行一个日期。

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/28 18:51:00 [显示全部帖子]

以下是引用xxfoxtable在2018/5/28 18:42:00的发言:
就是竖版的明细,变成横版,不需要统计

 

方法一1、交叉统计;

 

方法二2、http://www.foxtable.com/webhelp/scr/2965.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/29 8:50:00 [显示全部帖子]

Dim t As Table = Tables("统计表1")
Dim ndr As Row = t.AddNew
For i As Integer = 2 To t.Cols.Count - 1
    If t.Cols(i).Name.Contains("费") AndAlso t.cols(i).DataCol.Expression = "" Then
        ndr(i) = t.Compute("sum(" & t.Cols(i).Name & ")")
    End If
Next

 回到顶部