Excel精英培训网

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

[已解决]求助表名如何使用变量

[复制链接]
发表于 2014-8-27 13:19 | 显示全部楼层 |阅读模式
本帖最后由 tamotamo1 于 2014-8-28 11:10 编辑

我有一个excel工作簿,里面有N个表
例如表A 一直到 表 Z

然后有一个目录文件

表A     1
表B     2
.。。。。
。。。。
。。。。
表Z    26

现在我想把目录文件装入数组,然后通过find 来查找 表名 对应的数字在表中的位置,

例如在表A 中 查询 数字1 的位置, 表Z中查询数字 26的位置。
我是用的循环来实现

crr = Sheets("目录").[a1].CurrentRegion

For i = 1To 26

x = crr(i, 1)

n=crr(i,2)

for i=1 to26
u = Sheets(x).[2:2].Find(n, lookat:=xlWhole).Column     红色这行老是报错,请问是哪里写错了,谢谢!







最佳答案
2014-8-27 15:15
是不是因为N是数值,而表名是文本,所以必定找不到
把N改成CSTR(N)试试?

示例.zip

9.46 KB, 下载次数: 1

发表于 2014-8-27 13:59 | 显示全部楼层
不发附件,无法知晓你的实际情况!
回复

使用道具 举报

发表于 2014-8-27 14:26 | 显示全部楼层
单元格内查找一般用find,数组查找没记错的话是用instr
回复

使用道具 举报

发表于 2014-8-27 15:12 | 显示全部楼层
Sheets(x).[2:2].Find(n, lookat:=xlWhole)找不到满足条件的对象时就会返回Nothing。 你对Nothing去指定Column属性,自然就报错了
最好是分步来写,加个判断语句
Dim obj as object
set obj=Sheets(x).[2:2].Find(n, lookat:=xlWhole)
If not obj is nothing then u = obj.Column

回复

使用道具 举报

发表于 2014-8-27 15:15 | 显示全部楼层    本楼为最佳答案   
是不是因为N是数值,而表名是文本,所以必定找不到
把N改成CSTR(N)试试?
回复

使用道具 举报

发表于 2014-8-27 15:55 | 显示全部楼层
  1. Sub Test()
  2.     Dim arr, d, i
  3.     arr = Sheets("目录").[a1].CurrentRegion
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     For i = 1 To UBound(arr, 1)
  6.         If Not d.exists(arr(i, 1)) Then
  7.             d.Add arr(i, 1), arr(i, 2)
  8.         End If
  9.     Next i
  10.     For i = 1 To UBound(arr, 1)
  11.         If d.exists(arr(i, 1)) Then
  12.             '你的代码
  13.         End If
  14.     Next i
  15. End Sub
复制代码
你这个问题字典解决效率会高一些。最好还是发附件吧
回复

使用道具 举报

 楼主| 发表于 2014-8-27 17:35 | 显示全部楼层
suye1010 发表于 2014-8-27 15:12
Sheets(x).[2:2].Find(n, lookat:=xlWhole)找不到满足条件的对象时就会返回Nothing。 你对Nothing去指定Col ...

谢谢, 试过了,不是nothing的问题
回复

使用道具 举报

 楼主| 发表于 2014-8-27 17:36 | 显示全部楼层
轩辕轼轲 发表于 2014-8-27 15:55
你这个问题字典解决效率会高一些。最好还是发附件吧

谢谢,实际的文件里目录那个表里有很多列 ,字典的方法只能2列?





回复

使用道具 举报

 楼主| 发表于 2014-8-27 17:37 | 显示全部楼层
liuguansky 发表于 2014-8-27 15:15
是不是因为N是数值,而表名是文本,所以必定找不到
把N改成CSTR(N)试试?

谢谢,试过了,不行。。。
回复

使用道具 举报

 楼主| 发表于 2014-8-27 17:38 | 显示全部楼层
最开始我是用的笨办法,把目录里的对应关系一行行的手动敲if ...then  的, 写到最后用户新增了要求,发现目录里东西太多了。。不用循环的话要写的久了。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 12:52 , Processed in 0.326809 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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