ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-7-23 09:31 | 显示全部楼层

补充问下,为什么上面的公式不能分离下面的表?

补充问下,为什么上面的公式不能分离下面的表?
要报如下图错误?停留在do while那行。
我想要一个通用的脚本,再次麻烦大家。

[ 本帖最后由 vfd 于 2009-7-23 09:34 编辑 ]

溢出错误

溢出错误

调试结果

调试结果

准则分离.rar

6.8 KB, 下载次数: 8

要分离的准则

TA的精华主题

TA的得分主题

发表于 2009-7-23 09:45 | 显示全部楼层
路过吧,还是,呵

[ 本帖最后由 dys 于 2009-7-23 09:58 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-7-23 10:30 | 显示全部楼层
原帖由 vfd 于 2009-7-23 09:31 发表
补充问下,为什么上面的公式不能分离下面的表?
要报如下图错误?停留在do while那行。
我想要一个通用的脚本,再次麻烦大家。

条件已经发生改变,代码就要做相应修改:

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  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 "*[A-Z]*"
  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-23 13:03 | 显示全部楼层
呵呵,28楼的代码不就可以通用吗?
没测试!?

TA的精华主题

TA的得分主题

发表于 2009-7-23 13:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
把全角空格全用“|”替换掉,文字是如下格式。

1. Good to the last drop.||滴滴香浓,意犹未尽。(麦斯威尔咖啡)
10.To me, the past is black and white, but the future is always color. |||对我而言,过去平淡无奇;而未来,却是绚烂缤纷。(轩尼诗酒)
11. Just do it. ||只管去做。(耐克运动鞋)
12. Ask for more. ||渴望无限。(百事流行鞋)
13. The taste is great. ||味道好极了。(雀巢咖啡)
14. Feel the new space. ||感受新境界。(三星电子)
15. Intelligence everywhere. ||智慧演绎,无处不在。(摩托罗拉手机)
16. The choice of a new generation. ||新一代的选择。(百事可乐)
17. We integrate, you communicate. ||我们集大成,您超越自我。(三菱电工)
18. Take TOSHIBA, take the world. ||拥有东芝,拥有世界。(东芝电子)
19. Let’s make things better. | ||让我们做得更好。(飞利浦电子)
2. Obey your thirst. ||服从你的渴望。(雪碧)
20. No business too small, no problem too big. |||没有不做的小生意,没有解决不了的大问题。 (IBM公司)
3. The new digital era. ||数码新时代。(索尼影碟机)
4. We lead. Others copy.||我们领先,他人仿效。(理光复印机)
5. Impossible made possible. ||使不可能变为可能。(佳能打印机)
6. Take time to indulge. ||尽情享受吧!(雀巢冰激凌)
7. The relentless pursuit of perfection. ||不懈追求完美。 (凌志轿车)
8. Poetry in motion, dancing close to me. ||动态的诗,向我舞近。(丰田汽车)
9. Come to where the flavor is. Marlboro Country.|||光临风韵之境——万宝路世界。(万宝路香烟)

是不是可以理解为,instrrev全角空格返回位置的后面值就全是中文,前面就都是英文呢?这样就不用遍历字符串了,大量数据的时候,应该会比较省时间。

TA的精华主题

TA的得分主题

发表于 2009-7-23 13:52 | 显示全部楼层
原帖由 dys 于 2009-7-23 13:48 发表
把全角空格全用“|”替换掉,文字是如下格式。

1. Good to the last drop.||滴滴香浓,意犹未尽。(麦斯威尔咖啡)
10.To me, the past is black and white, but the future is always color. |||对我而言 ...

如果要替换,那还不如直接用这些空格做分离条件,何必多此一举呢?

TA的精华主题

TA的得分主题

发表于 2009-7-23 14:00 | 显示全部楼层
这个应该能通用,满足楼主提供的两个附件:
英汉分离3.rar (10.47 KB, 下载次数: 35)

TA的精华主题

TA的得分主题

发表于 2009-7-23 14:01 | 显示全部楼层
代码

Sub text()
    Dim i As Long, Position As Integer, myString As String, English As String, Chinese As String
    For i = 1 To [a65536].End(xlUp).Row
        myString = Cells(i, 1).Value
        Position = InStrRev(myString, " ")
        English = Left(myString, Position - 1)
        Chinese = Right(myString, Len(myString) - Position)
        Debug.Print English
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2009-7-23 14:02 | 显示全部楼层
原帖由 alzeng 于 2009-7-23 13:52 发表

如果要替换,那还不如直接用这些空格做分离条件,何必多此一举呢?



您没看我最后一边那句话,替换是为了看清字符格式。。。。。。。。。

TA的精华主题

TA的得分主题

发表于 2009-7-23 14:20 | 显示全部楼层
晕,原来还有第二个附近?!

不过第二个比第一个简单些,用正则找到第一个英文字母,然后用firstindex就可以返回其在字符串中的位置。

代码。。。。。。。一会儿
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-17 23:08 , Processed in 0.048238 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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