以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- [求助]一个数据值提取的功能 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16357)
|
-- 作者:ddlzq
-- 发布时间:2012/2/10 17:38:00
-- [求助]一个数据值提取的功能
各位老师:
有一个功能需求,请各位老师赐教。
例一个单元格,输入后,按规则提取数据写到另一个单元格中。
例:数据格式
ABC-001 会按分隔符“-”提取分隔符前三位,再提取分隔符后三位加个分隔符写入另一个单元格。 数据结果: ABC-001
ABC01-020/A 会按分隔符隔“-”提取分隔符前三位,再提取分隔符后三位加个分隔符写入另一个单元格。 数据结果:ABC-020
ABC1-123/AB 会按分隔符隔“-”提取分隔符前三位,再提取分隔符后三位加个分隔符写入另一个单元格。 数据结果:ABC-123
请问老师,是用表达式写还是用代码写?请老师赐教
|
-- 作者:狐狸爸爸
-- 发布时间:2012/2/10 17:42:00
--
Dim vals() As String = "ABC01-020/A".Split("-") If vals.Length >=2 Then Return vals(0).SubString(0,3) & "-" & Vals(1).SubString(0,3) End If
|
-- 作者:ddlzq
-- 发布时间:2012/2/10 18:08:00
--
狐爸,出了这个错,这是为啥 ? 此主题相关图片如下:无标题.jpg
|
-- 作者:ddlzq
-- 发布时间:2012/2/10 18:19:00
--
If e.DataCol.name = "规格型号" Then Dim vals() As String = e.DataRow("规格型号").Split("-") If vals.Length >=2 Then Dim gjz As String = vals(0).SubString(0,3) & "-" & Vals(1).SubString(0,3) e.DataRow("规格型号关键字") = gjz End If End If
狐爸:我借您代码,这样写了,可以,但如果数据写这样就会出错
例数值 ABC-01 而写ABC-010 分隔符后位数够了才可以,如何能够避免呢? 此主题相关图片如下:1.jpg
|
-- 作者:czy
-- 发布时间:2012/2/10 19:09:00
--
那不这样改一下
Dim vals() As String = "ABC01-01".Split("-") If vals.Length >=2 Then Dim n,n1 As Integer n = iif(Len(Vals(0))<3,Len(Vals(0)),3) n1 = iif(Len(Vals(1))<3,Len(Vals(1)),3) Return vals(0).SubString(0,n) & "-" & Vals(1).SubString(0,n1) End If
|
-- 作者:小猪鑫鑫
-- 发布时间:2012/2/10 21:46:00
--
学习
|
-- 作者:ddlzq
-- 发布时间:2012/2/13 15:04:00
--
真的非常感谢CZY 老师!
|