ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何用VBA分离如下中英文

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-21 23:17 | 显示全部楼层
原帖由 unsamesky 于 2009-7-20 22:09 发表
Sub Test()
  '本方法不支持汉字和字母的混合分离!只支持汉字段和字母段的分离!尚未详细测试!
  Dim capStr As String
  capStr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  
  Dim i As L ...


  导入我的excel表格,结果不正确哦,请兄台核实,谢谢!

TA的精华主题

TA的得分主题

发表于 2009-7-22 00:05 | 显示全部楼层
经过测试,似乎并未发现问题啊!
中英文分离.JPG
详细见附件!

中英文示例.rar

11.34 KB, 下载次数: 18

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-22 08:01 | 显示全部楼层
原帖由 unsamesky 于 2009-7-22 00:05 发表
经过测试,似乎并未发现问题啊!
552653
详细见附件!


你的数据没问题,但我要分离的东西确实出错了,请看图:

错误图片

错误图片

TA的精华主题

TA的得分主题

发表于 2009-7-22 08:15 | 显示全部楼层
原帖由 vfd 于 2009-7-22 08:01 发表


你的数据没问题,但我要分离的东西确实出错了,请看图:

你把你的表发上来便于大家调试代码,因为数据不同处理的方法自然不同。

TA的精华主题

TA的得分主题

发表于 2009-7-22 14:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我明白了,中文标点符号在作怪,等下帮你改掉!

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-22 15:16 | 显示全部楼层
原帖由 alzeng 于 2009-7-22 08:15 发表

你把你的表发上来便于大家调试代码,因为数据不同处理的方法自然不同。


有啊,在第一楼啊

TA的精华主题

TA的得分主题

发表于 2009-7-22 15:29 | 显示全部楼层
不以空格做条件:

  1. Sub splt()
  2.     Dim rng As Range, stg$, str$, i%, j%

  3.     For Each rng In Range("A1", [A65536].End(3))
  4.         stg = rng
  5.         i = 1
  6.         Do Until Mid(stg, i, 1) Like "*[一-龥]*"
  7.             i = i + 1
  8.         Loop
  9.         
  10.         str = Left(stg, i - 1)
  11.         j = 0
  12.         Do While IsNumeric(Left(str, j + 1))
  13.             j = j + 1
  14.         Loop

  15.         rng.Offset(, 1) = Trim(Right(str, Len(str) - j))
  16.         rng.Offset(, 2) = Trim(Right(stg, Len(stg) - i))
  17.     Next
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2009-7-22 18:06 | 显示全部楼层
因为你的源文件中用到了全角字符,所以出现了问题。
加入了两行判断语句。
附件经测试,没有问题!
楼主复查!

分离un.rar

13.11 KB, 下载次数: 27

TA的精华主题

TA的得分主题

发表于 2009-7-22 18:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 alzeng 于 2009-7-22 15:29 发表
不以空格做条件:
Sub splt()
    Dim rng As Range, stg$, str$, i%, j%

    For Each rng In Range("A1", [A65536].End(3))
        stg = rng
        i = 1
        Do Until Mid(stg, i, 1) Like "*[一 ...


hoho,不错的代码,有空研究一下!
1.不过最后取值的时候,汉字部分掉了第一个字!

2.如果汉字在前就会出问题!

当然,这或许已经超出了楼主的要求了!

TA的精华主题

TA的得分主题

发表于 2009-7-23 06:14 | 显示全部楼层
1.不过最后取值的时候,汉字部分掉了第一个字!

2.如果汉字在前就会出问题!

谢谢提醒,当时未做测试,修正一下:

  1. Sub splt()
  2.     Dim rng As Range, stg$, str$, i%, j%

  3.     For Each rng In Range("A1", [A65536].End(3))
  4.         stg = rng
  5.         i = 1
  6.         Do Until Mid(stg, i + 1, 1) Like "*[一-龥]*"
  7.             i = i + 1
  8.         Loop
  9.         
  10.         str = Left(stg, i - 1)
  11.         j = 0
  12.         Do While IsNumeric(Left(str, j + 1))
  13.             j = j + 1
  14.         Loop

  15.         rng.Offset(, 1) = Trim(Right(str, Len(str) - j))
  16.         rng.Offset(, 2) = Trim(Right(stg, Len(stg) - i))
  17.     Next
  18. End Sub
复制代码
中英文分离.rar (8.24 KB, 下载次数: 18)
关于第二条,如你所说,不在本贴要解决的范畴.有兴趣的话,咱们可以别贴讨论,^_^

[ 本帖最后由 alzeng 于 2009-7-23 06:25 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-17 23:12 , Processed in 0.042982 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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