Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6649|回复: 6

[已解决]如何使用excel vba提取英文单词到指定的单元格?

[复制链接]
发表于 2015-3-15 17:16 | 显示全部楼层 |阅读模式
如何使用excel vba提取英文单词到指定的单元格?
如附件(不成功的代码和单词均在上面)在工作表3的a列有一些英文单词,想将他们按单词首字母不同,分别放到表1中不同的列,也就是首字母与列标相同(首字母为a的单词放入a列,首字母为b的单词放入b列,首字母为c的单词放入c列,以此类推),而且按提取的顺序从每列首行依次往
下放入其中。我在百度上查了许久,写的代码只能提取一个单词,不知为何?其次,如果首字母是大写的单词不知道如何用vba表达,请大师们指教啊。谢谢。
最佳答案
2015-3-15 17:40
代码没做容错处理,只考虑了是单词的情况。

Book15.rar

6.6 KB, 下载次数: 30

发表于 2015-3-15 17:37 | 显示全部楼层
  1. Sub demo()
  2.     Application.ScreenUpdating = False
  3.     Dim arr, i&
  4.     With Sheet3
  5.         arr = .Range("a1:b" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
  6.     End With
  7.     With Sheet1
  8.         For i = 1 To UBound(arr)
  9.             .Cells(Rows.Count, Left(arr(i, 1), 1)).End(xlUp).Offset(1).Value = arr(i, 1)
  10.         
  11.         Next
  12.     End With
  13.     Application.ScreenUpdating = True
  14.     MsgBox "整理完成"
  15. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
zyq2010 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-3-15 17:40 | 显示全部楼层    本楼为最佳答案   
代码没做容错处理,只考虑了是单词的情况。
回复

使用道具 举报

发表于 2015-3-15 17:42 | 显示全部楼层
本帖最后由 26759761@qq.com 于 2015-3-15 17:51 编辑

  1. Sub xx()
  2. Dim ar, x, 列标, r
  3. Sheet1.Cells.Clear: Sheet3.Select
  4.   ar = Range("a1:a" & [a65500].End(3).Row)
  5.     With Sheet1
  6.        For x = 1 To UBound(ar)
  7.        列标 = Left(ar(x, 1), 1)
  8.        r = .Range(列标 & 65500).End(3).Row + 1
  9.        .Cells(r, 列标) = ar(x, 1)
  10.        Next: .Rows(1).Delete
  11.     End With
  12.     MsgBox "完毕"
  13. End Sub
复制代码

Book15.rar

16.54 KB, 下载次数: 22

评分

参与人数 1 +1 收起 理由
zyq2010 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-3-15 17:44 | 显示全部楼层
本帖最后由 baksy 于 2015-3-15 17:46 编辑

函数解决

Book15.rar

9.7 KB, 下载次数: 14

评分

参与人数 1 +1 收起 理由
zyq2010 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-3-15 23:04 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, d, i&, z$
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheet3.Range("a1").CurrentRegion
  5. Sheet1.Activate
  6. For i = 1 To UBound(arr)
  7.     z = Left(LCase(arr(i, 1)), 1)
  8.     d(z) = d(z) + 1
  9.     Cells(d(z), "" & z) = arr(i, 1)
  10. Next
  11. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
zyq2010 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-3-19 10:12 | 显示全部楼层
列号参数是可以用字母的,在工作表中,列本来就是字母在标示,A,B,C,D列。当然也能用数字表示的。我这里取巧用。

评分

参与人数 1 +1 收起 理由
zyq2010 + 1 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-23 21:59 , Processed in 0.333407 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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