Foxtable(狐表)用户栏目专家坐堂 → 想提取单位数值并求和


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

主题:想提取单位数值并求和

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


加好友 发短信
等级:八尾狐 帖子:2003 积分:6383 威望:0 精华:0 注册:2017/11/8 17:37:00
想提取单位数值并求和  发帖心情 Post By:2024/11/7 9:30:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.zip

想求出单位前面数字的总和
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20241107091936.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:狐神 帖子:4761 积分:34613 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2024/11/7 10:04:00 [只看该作者]

Dim 集合 As New list(Of String)({"10箱5支", "10箱6瓶", "5箱2包", "10箱5扎", "10箱6瓶", "5箱2包"})
Output.Show(集合.Select(Function(元素) CInt(元素.Split("箱")(0))).sum & "箱")
Dim 单位集 As New list(Of String)(集合.Select(Function(元素) Right(元素, 1)).Distinct)
For Each 单位 As String In 单位集
    Output.Show(集合.Where(Function(元素) Right(元素, 1) = 单位).Select(Function(元素) CInt(元素.Split("箱")(1).Split(单位)(0))).sum & 单位)
Next 


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


加好友 发短信
等级:超级版主 帖子:110854 积分:564214 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/7 10:18:00 [只看该作者]

增加辅助列,按“箱”字符拆分,后把数字取出来放到辅助列,再统计

例如

Dim s As String = "5箱2包"
Dim ss() As String = s.split("箱")
Dim 箱 As Integer = ss(0)
Dim 单位 As String = right(ss(1), 1)
Dim b As Integer = ss(1).TrimEnd(单位)

Output.Show(箱 & "," & b & ",单位=" & 单位)

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


加好友 发短信
等级:八尾狐 帖子:2003 积分:6383 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2024/11/7 10:47:00 [只看该作者]

增加辅助列可能不太实际,我是用在单据录入数据列统计的,单位的规则也不统一

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


加好友 发短信
等级:八尾狐 帖子:2003 积分:6383 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2024/11/7 10:56:00 [只看该作者]

是否可以,
1、先把列的单位数值列出来,例如:
Dim 集合 As New list(Of String)({"10箱5支", "10箱6瓶", "5箱2包", "10箱5扎", "10箱6瓶", "5箱2包"})
2、提取LIST不重复的一个字的中文
3、求每个中文前面数字的和


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


加好友 发短信
等级:超级版主 帖子:110854 积分:564214 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/7 10:56:00 [只看该作者]

不增加辅助列,数据少还好,遍历一下就行。数据多,处理会很慢的。

至于单位,考虑使用正则处理

Dim s As String = "5箱2包"
Dim p As String = "\d+"
Dim r As New System.Text.RegularExpressions.Regex(p)
Dim str = r.Split(s)
For Each a As String In str
    Output.Show(a)
Next

p = "[^\d+]" '[^\d+]
r = New System.Text.RegularExpressions.Regex(p)
str = r.Split(s)
For Each a As String In str
    Output.Show(a)
Next

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


加好友 发短信
等级:八尾狐 帖子:2003 积分:6383 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2024/11/7 16:08:00 [只看该作者]

如何将计算出来的结果放到合计栏里面
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20241107160626.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:110854 积分:564214 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/7 16:12:00 [只看该作者]

把辅助数量里的单位去掉,改为整数列

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


加好友 发短信
等级:八尾狐 帖子:2003 积分:6383 威望:0 精华:0 注册:2017/11/8 17:37:00
  发帖心情 Post By:2024/11/7 16:49:00 [只看该作者]

现在这里就是要先把辅助数量列的不同单位进行汇总,再把数值和单位填到合计栏

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


加好友 发短信
等级:超级版主 帖子:110854 积分:564214 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/11/7 16:54:00 [只看该作者]

合计没有办法使用代码赋值。

变通方法可以看看:

2、http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=171956

 回到顶部