Foxtable(狐表)用户栏目专家坐堂 → 高速合并如何实现相同物料代码合并数量


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

主题:高速合并如何实现相同物料代码合并数量

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


加好友 发短信
等级:婴狐 帖子:4 积分:127 威望:0 精华:0 注册:2024/9/6 12:34:00
高速合并如何实现相同物料代码合并数量  发帖心情 Post By:2025/4/13 8:21:00 [只看该作者]

高速合并多个excel文件时,如何能够将物料代码相同的行的自动合并为一行,并且数量自动累加。即确保物料代码列唯一,而总数量不变。物料代码没有重复的行正常引入即可。

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


加好友 发短信
等级:婴狐 帖子:4 积分:127 威望:0 精华:0 注册:2024/9/6 12:34:00
  发帖心情 Post By:2025/4/13 8:25:00 [只看该作者]

如果可以在高速合并的三个选项中增加这个功能就更好了。


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


加好友 发短信
等级:超级版主 帖子:113379 积分:577366 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/13 20:13:00 [只看该作者]

参考:http://www.foxtable.com/webhelp/topics/2334.htm,合并的时候先查一查是否有同代码的行,有就合并,没有就新增

Dim Book As New XLS.Book("c:\test\订单.xls")
Dim 
Sheet As XLS.Sheet = Book.Sheets(0)
Tables(
"订单").StopRedraw()
Dim 
nms() As String = {"物料代码","数量","列1","列2","……"}
For n As Integer = 1 To Sheet.Rows.Count -1
    
Dim bh As String = sheet(n,0).Text
    
Dim dr As DataRow = DataTables("订单").Find("物料代码 = '" & bh & "'")
    If 
dr Is Nothing Then '如果不存在同编号的订单
        
dr =  DataTables("订单").AddNew()
    For 
m As Integer = 0 To nms.Length - 1
        
dr(nms(m)) = Sheet(n,m).Value
    Next
else ‘如果存在就合并数量
dr("数量") = dr("数量")+Sheet(n,1).Value
    End If
Next
Tables(
"订单").ResumeRedraw()

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


加好友 发短信
等级:婴狐 帖子:4 积分:127 威望:0 精华:0 注册:2024/9/6 12:34:00
  发帖心情 Post By:2025/4/14 21:21:00 [只看该作者]

通过版主的指导,已实现需求。但是又碰到另一个问题。我想用OpenFileDialog对话框方式选择excel,而不是只能指定名称和目录读取,请教如何实现。代码如下:

DataTables("随货单引入").DataRows.Clear() '清除以前引入的数据

Dim Book As New XLS.Book("c:\test\工作簿3.xls")

Dim Sheet As XLS.Sheet = Book.Sheets(0)

Dim nms() As String = {65,"商品编码","商品名称","规格","生产企业","产地","单位","通用名称","按批号开piao"}

For n As Integer = 1 To Sheet.Rows.Count -1

    Dim bh As String = sheet(n,1).Text

    Dim dr As DataRow = DataTables("随货单引入").Find("商品编码 = '" & bh & "'")

    If dr Is Nothing Then '如果不存在同编号的订单

        dr =  DataTables("随货单引入").AddNew()

    For m As Integer = 0 To nms.Length - 1

        dr(nms(m)) = Sheet(n,m).Value

    Next

Else '如果存在就合并数量

dr("销售数量") = dr("销售数量") + Sheet(n,10).Value

    End If

Next

DataTables("随货单引入").DeleteFor("单位 Is Null")'删除合计行



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


加好友 发短信
等级:超级版主 帖子:113379 积分:577366 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/14 22:25:00 [只看该作者]

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= 
"Excel文件|*.xls" '设置筛选器
If
 dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    MessageBox.Show(
"你选择的是:" & dlg.FileName,"提示"'提示用户选择的文件

DataTables("随货单引入").DataRows.Clear() '清除以前引入的数据

Dim Book As New XLS.Book(dlg.FileName)

……

……

End If

 回到顶部