Excel精英培训网

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

根据关键词查找并自动分配至相应工作表

[复制链接]
发表于 2019-12-11 00:21 | 显示全部楼层 |阅读模式
根据关键词查找并自动分配至相应工作表,请见附件。
需要达到的效果:
1. 点分列按钮后A列数据会自动分到其他列(已完成,看是否可以优化)

2. 此工作薄有很多工作表,除数据外,每个工作表中的小区名称包含很多,每次“数据”工作表中会有很多这些数据输入,之后需要将这些数据处理后自动分配至其他工作表中(按其他工作表中小区名称自动查找“数据”表中小区名称,自动分配至对应工作表中;

3. 其他工作表中A列,B列与E列有很多公式,运行很慢,是否有办法解决(A列是计算均价,E列是根据C列内容自动增加日期,且之后保留日期时间,B列是序号,需要根据C列填内容自动在B列添加序号,包含删除或增加中间行后,序号自动完成)

4. 其中“版块”工作表是除“数据”工作表之外所有工作名称下所对应要包含的小区名称,“数据”工作表中小区名称需要自动分配到其他工作表中(根据 “版块”工作表中所包含的小区名称查找并写入)

信息分类.zip

523.94 KB, 下载次数: 7

发表于 2019-12-11 12:53 | 显示全部楼层
看了好半天,最后还是直接进文件才猜出了个大概。你最关键的地方没说:小区是分版块的;
还有两个错误:
   辽源:工作表名称与板块名称不符
   周家嘴路东:工作表名称多一个空格,空格也是字符文字;

下面是代码,看起来像那么回事,但数据对不对你自己审核,我看不明白:
注:数据中手机号存放不规范,导致数据处理会出错,比如:黄兴的前两个手机号错位了,这个我没办法,数据不规范,读取出来的也就不规范了;
代码要放在“数据”表中执行,切记:

For i = 3 To Worksheets.Count
    Worksheets(i).Range("a3:k1000").ClearContents
Next i

Dim zd
Set zd = CreateObject("scripting.dictionary")
For i = 2 To 100
    For k = 5 To 1000
        If IsEmpty(Worksheets("版块").Cells(k, i)) Then
           Exit For
        End If
        s = Worksheets("版块").Cells(k, i)
        zd(s) = Worksheets("版块").Cells(4, i)
    Next k
Next i

For i = 3 To [a10000].End(3).Row
    s = Split(Cells(i, 1), " ")
    If zd.exists(s(0)) Then
       For k = 3 To 1000
           If IsEmpty(Worksheets(zd(s(0))).Cells(k, 3)) Then
              For j = 0 To UBound(s)
                  Worksheets(zd(s(0))).Cells(k, 3 + j) = s(j)
              Next j
              Exit For
           End If
       Next k
    End If
Next i


回复

使用道具 举报

 楼主| 发表于 2019-12-11 13:17 | 显示全部楼层
hfwufanhf2006 发表于 2019-12-11 12:53
看了好半天,最后还是直接进文件才猜出了个大概。你最关键的地方没说:小区是分版块的;
还有两个错误:
...

感谢楼主,数据整理了下,复制代码运行后报错,请给建议,谢谢!
错误提示.png
报错1.png
回复

使用道具 举报

发表于 2019-12-11 13:26 | 显示全部楼层
axichen 发表于 2019-12-11 13:17
感谢楼主,数据整理了下,复制代码运行后报错,请给建议,谢谢!

  你的数据有问题,板块名称与工作表名称不一致,我发现辽源和周家嘴路东都不对;  名称对不上就找不到,当然可以把找不到名称的数据舍弃,但这样操作会丢失部分数据,我认为不好。

回复

使用道具 举报

 楼主| 发表于 2019-12-11 14:28 | 显示全部楼层
hfwufanhf2006 发表于 2019-12-11 13:26
你的数据有问题,板块名称与工作表名称不一致,我发现辽源和周家嘴路东都不对;  名称对不上就找不到, ...

这两个数据已调整,请再看下,谢谢!

信息分类.zip

482.04 KB, 下载次数: 2

回复

使用道具 举报

 楼主| 发表于 2019-12-11 14:38 | 显示全部楼层
hfwufanhf2006 发表于 2019-12-11 13:26
你的数据有问题,板块名称与工作表名称不一致,我发现辽源和周家嘴路东都不对;  名称对不上就找不到, ...

刚重新运行了一下,目前 只有将小区名称写过来,其他对应的几列没有过来,其中B,C,D,E,F,G列的数据也要一起写过来至版块表格中的C,D,E,F,G,H列。、
每次在数据表中增加内容后,其他版块下次会自动向下写入。
71462b550cb435437279dd020ce10d4.png
回复

使用道具 举报

发表于 2019-12-11 15:56 | 显示全部楼层
axichen 发表于 2019-12-11 14:38
刚重新运行了一下,目前 只有将小区名称写过来,其他对应的几列没有过来,其中B,C,D,E,F,G列的数据也要一 ...

我不清楚你是如何修改的,你就下载下面的附件好了。
这个文件是你1楼的文件,我只是在“数据”里插入了一个按钮,点击按钮运行。
之前的代码没有写序号,这次我把序号加上去了,但平均价格我看不明白,你自己用函数做下就可以了。

剩下的问题就是我上面回复过的:你数据不太规范,读取的电话很容易错位,这个我没办法处理。
通常为了明显的区分数据,需要有明确的分隔符,你用的是空格,我猜测是从网站导入的。一个空格和多个空格是不一样的,你的数据就存在这类问题。

修改:信息分类.rar

490.52 KB, 下载次数: 24

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 19:23 , Processed in 0.714924 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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