ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 20535|回复: 56

[讨论] 从字符串中提取数字,看看能不能取得新的突破?(又新增到2题,带有多负号的字串)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-11-6 13:23 | 显示全部楼层 |阅读模式
第一题:公式长度不再限制,重在参与,包括能处理空值.
字符串结果
nbe12.368mnbnbr12.368
冰箱5台5
mny-2.358ny-2.358
muy0000128nm0000128
n-258cm-258
021.3698021.3698
第二题:经FDD坛友提议,要适用多负号的提取,因此我补充多负号的字符串,作为第二题:公式长度不再限制,重在参与,请大家多多发言.
字符串结果
nbe12.368mnbnbr12.368
冰箱5台5
mny-2.358ny-2.358
muy0000128nm0000128
n-258cm-258
21.369821.3698
abc00015998.36km00015998.36
mkunbt-2198.361kg-2198.361
895人/月895
ABC总公司利润--本年利润: -6.57 亿-6.57
D公司(中国)当前盈利-2.38亿RMB-2.38
当前时间2008年2008
字符串(无数字)
字符串 - 无数字
邯郸-北京火车票价为:63.00元63.00
B-C Earnings this year: -0.25Billion-0.25
B-C Earnings this year:
0.25Billion
0.25
ID证:130702197611280312130702197611280312
手机:1352018967213520189672
电话:008631053820339006831053820339


[ 本帖最后由 wshcw 于 2008-11-9 11:38 编辑 ]

TA的精华主题

TA的得分主题

发表于 2008-11-6 16:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好像突破有难度哈,关注……

TA的精华主题

TA的得分主题

发表于 2008-11-6 16:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一周以前各位高手已经帮助解决了,呵呵!见
http://club.excelhome.net/thread-365934-1-1.html

[ 本帖最后由 makelot 于 2008-11-6 16:37 编辑 ]

TA的精华主题

TA的得分主题

发表于 2008-11-6 20:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
下午试解:84字符,达不到要求。

TA的精华主题

TA的得分主题

发表于 2008-11-6 16:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
问题由山菊花版主最终搞定,此程序适应力比较强,代码如下:

Public Function 数字提取(cTxt As String)

    Dim sz$, x$

    For i = 1 To Len(cTxt)
        x = Mid(cTxt, i, 1)
        If (x = "%" Or x = "%") And IsNumeric(sz) Then
            sz = sz / 100
            Exit For
        ElseIf x = "-" Then
            sz = "-"
        ElseIf x = "." Or IsNumeric(x) Then
            sz = sz & x
            If sz <> "-" And Not IsNumeric(sz) Then sz = ""
        Else
            If IsNumeric(sz) Then Exit For
            sz = ""
        End If
    Next

    If IsNumeric(sz) Then
        If Left(sz, 1) = "." Then sz = 0 & sz
        数字提取 = sz
    Else
        数字提取 = ""
    End If

End Function

以上的得到的结果只是文本格式,若想要数字格式,把其中的“数字提取 = sz ”改为“数字提取 = Val(sz)”就行。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-11-6 17:03 | 显示全部楼层
原帖由 makelot 于 2008-11-6 16:49 发表
问题由山菊花版主最终搞定,此程序适应力比较强,代码如下:

Public Function 数字提取(cTxt As String)

    Dim sz$, x$

    For i = 1 To Len(cTxt)
        x = Mid(cTxt, i, 1)
        If (x = "%" ...

看了你引用的链接主题,说实话,我不满意,公式解决还是老套路,没有创新,公式字符数也达不到我的要求,VBA我不懂,不敢评论.

TA的精华主题

TA的得分主题

发表于 2008-11-6 17:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不好意思,刚看到“公式长度70字左右”的要求

[ 本帖最后由 makelot 于 2008-11-6 23:41 编辑 ]

TA的精华主题

TA的得分主题

发表于 2008-11-6 17:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
赫赫,只做到120个字符,还是只针对1楼提供的数据。70个字符不太容易……
搂主可以把自己思路的公式发上来看一下,参考参考,赫赫

TA的精华主题

TA的得分主题

发表于 2008-11-6 17:56 | 显示全部楼层
如何将excel中的文本删除,只保留原数字?
复制到Word中,替换方法,查找[!0-9],勾选“使用通配符”,全部替换,再复制回Excel(选择性粘贴文本)。

TA的精华主题

TA的得分主题

发表于 2008-11-6 18:01 | 显示全部楼层
哦,wshcw老师的题目又在这里出现了,呵呵,顶一下。想看看在公式方面,home里有没有人造诣比轻舟老师高一些。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 13:15 , Processed in 0.044742 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表