以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 想提取单位数值并求和 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194062) |
||||
-- 作者:zhuxinhui -- 发布时间:2024/11/7 9:30:00 -- 想提取单位数值并求和
想求出单位前面数字的总和 此主题相关图片如下:微信截图_20241107091936.png |
||||
-- 作者:y2287958 -- 发布时间: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 |
||||
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2024/11/7 10:47:00 -- 增加辅助列可能不太实际,我是用在单据录入数据列统计的,单位的规则也不统一 |
||||
-- 作者:zhuxinhui -- 发布时间:2024/11/7 10:56:00 -- 是否可以, 1、先把列的单位数值列出来,例如:
|
||||
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2024/11/7 16:08:00 -- 如何将计算出来的结果放到合计栏里面 此主题相关图片如下:微信截图_20241107160626.png |
||||
-- 作者:有点蓝 -- 发布时间:2024/11/7 16:12:00 -- 把辅助数量里的单位去掉,改为整数列 |
||||
-- 作者:zhuxinhui -- 发布时间:2024/11/7 16:49:00 -- 现在这里就是要先把辅助数量列的不同单位进行汇总,再把数值和单位填到合计栏 |
||||
-- 作者:有点蓝 -- 发布时间:2024/11/7 16:54:00 -- 合计没有办法使用代码赋值。 变通方法可以看看: 2、http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=171956
|