Excel精英培训网

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

[VBA] VBA为什么不能输出E列 所在地信息

[复制链接]
发表于 2016-11-9 22:07 | 显示全部楼层 |阅读模式
VBA为什么不能输出E列  所在地信息

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-11-10 09:09 | 显示全部楼层
  1. '例5.26
  2. Sub 判断()
  3. Dim i As Integer, j As Integer, A As String * 18
  4. Dim m As Integer, n As Integer
  5. '把B 65536单元格上面第一个非空单元格的行号(Row)赋给变量m。
  6. m = Range("B65536").End(xlUp).Row
  7. For n = 2 To m
  8.     A = Range("B" & n)
  9.     '提取身份证编码的第17位(性别编码)
  10. '比较该位编码对2的模(余数)是否为0
  11. If Mid(A, 17, 1) Mod 2 = 0 Then
  12. '模为0表示性别为女,把女赋给单元格Cn
  13.         Range("C" & n) = "女"
  14.     Else
  15.         Range("C" & n) = "男"
  16.     End If
  17.     '依次提取身份证的出生年份:身份证编码的第7~10位,
  18.     '出生月份:身份证编码的第11~12位,出生日期:身份证编码的第13~14位
  19.     Range("D" & n) = Mid(A, 7, 4) & "-" & Mid(A, 11, 2) & "-" & Mid(A, 13, 2)
  20.     j = Range("g65536").End(xlUp).Row
  21.     For i = 1 To j
  22.         '在G列查找等于身份证编码的前六位(户口所在地编码)的单元格
  23. If Range("G" & i) = Left$(A, 6) Then
  24.         '找到后,把地址名称赋给单元格En
  25. Range("E" & n) = Range("H" & i)
  26.     End If
  27. Next i
  28. Next n
  29. End Sub
复制代码
不能用LEFT,要用LEFT$
回复

使用道具 举报

 楼主| 发表于 2016-11-10 09:11 | 显示全部楼层
望帝春心 发表于 2016-11-10 09:09
不能用LEFT,要用LEFT$

为什么     不能用LEFT ,LEFT$   

你是怎样发现这个问题

回复

使用道具 举报

发表于 2016-11-10 09:53 | 显示全部楼层
laoau138 发表于 2016-11-10 09:11
为什么     不能用LEFT ,LEFT$   

你是怎样发现这个问题

也许就像文本不能与数字相等吧...像函数中要用--去转换一样,你也可以这样写If Range("G" & i) = Evaluate(Left(A, 6)) Then
回复

使用道具 举报

 楼主| 发表于 2016-11-10 16:39 | 显示全部楼层
望帝春心 发表于 2016-11-10 09:53
也许就像文本不能与数字相等吧...像函数中要用--去转换一样,你也可以这样写If Range("G" & i) = Evaluat ...

Evaluate    是什么

一个是数字,一个是字符串   你是怎样发现的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 10:56 , Processed in 0.295643 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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