Excel精英培训网

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

[已解决]学艺不精,又有问题了;)

[复制链接]
发表于 2014-3-18 11:26 | 显示全部楼层 |阅读模式
本帖最后由 sixnu 于 2014-3-18 13:13 编辑

地址里没有省的就空着
最佳答案
2014-3-18 11:51
  1. Sub 提取省()
  2.     Dim arr, brr, k%, m%
  3.     Row = Cells(Rows.Count, 1).End(3).Row
  4.     arr = Sheets("sheet1").Range("a1:a" & Row)
  5.     brr = Sheets("省").Range("a1").CurrentRegion
  6.     For k = 2 To UBound(arr)
  7.         For m = 2 To UBound(brr)
  8.             If InStr(Left(arr(k, 1), 7), brr(m, 1)) > 0 Then
  9.                 arr(k, 1) = brr(m, 1)
  10.                 Exit For
  11.             End If
  12.         Next m
  13.         If m = UBound(brr) + 1 Then arr(k, 1) = ""
  14.     Next k
  15.     Sheets("sheet1").Range("e1").Resize(UBound(arr)) = arr
  16. End Sub
复制代码

如果地址没有省,就空着.zip

15.83 KB, 下载次数: 15

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-3-18 11:42 | 显示全部楼层
本帖最后由 Zipall 于 2014-3-18 11:43 编辑

E2
=IF(ISNA(MATCH(LEFT(A2,2)&"*",省!A:A,)),"",INDEX(省!A:A,MATCH(LEFT(A2,2)&"*",省!A:A,)))
向下填充

vba的话可以用range.find
  1. Sub 提取省()
  2.     Dim arr, brr, k%, m%
  3.     Row = Cells(Rows.Count, 1).End(3).Row
  4.     arr = Sheets("sheet1").Range("a1:a" & Row)
  5.     For k = 2 To UBound(arr)
  6.         Set t = Nothing
  7.         Set t = Sheets("省").Range("a:a").Find(Left(arr(k, 1), 2))
  8.         If t Is Nothing Then arr(k, 1) = "" Else arr(k, 1) = t.Value
  9.     Next k
  10.     Sheets("sheet1").Range("e1").Resize(UBound(arr)) = arr
  11. End Sub
复制代码
回复

使用道具 举报

发表于 2014-3-18 11:51 | 显示全部楼层    本楼为最佳答案   
  1. Sub 提取省()
  2.     Dim arr, brr, k%, m%
  3.     Row = Cells(Rows.Count, 1).End(3).Row
  4.     arr = Sheets("sheet1").Range("a1:a" & Row)
  5.     brr = Sheets("省").Range("a1").CurrentRegion
  6.     For k = 2 To UBound(arr)
  7.         For m = 2 To UBound(brr)
  8.             If InStr(Left(arr(k, 1), 7), brr(m, 1)) > 0 Then
  9.                 arr(k, 1) = brr(m, 1)
  10.                 Exit For
  11.             End If
  12.         Next m
  13.         If m = UBound(brr) + 1 Then arr(k, 1) = ""
  14.     Next k
  15.     Sheets("sheet1").Range("e1").Resize(UBound(arr)) = arr
  16. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 23:07 , Processed in 0.232094 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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