ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 568|回复: 8

[求助] 求助各位大神关于筛选后合并子表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-16 13:39 | 显示全部楼层 |阅读模式
现每周需要和车辆监管库进行对账,我需要对车辆台账筛选后合并子表,具体如下并见附件,
1、需要将每个客户已入库的车辆(即L列已有日期),但还没还款提车(W列没有日期或者为空,因为有退车和其他不做业务等情况标记为其他文字而非日期,这些也一并筛掉)全部筛选出来合并在一起,其他(已提车或者未入库)都删去,不留空行
2、新建一个名称为合并在库车辆的子表,每个客户子表筛选完后,将所有客户子表合并在这张名称为合并在库车辆的子表,表头目录留在最上面一行,其他目录不留,其他子表空表1,空表2,盯市台账、汇率,汇总等与客户无关的子表都不参与筛选,留着就行,合并在库车辆的子表放在最前即可


因后续子表客户越来越多,如果还用传统办法已难以为继,现求助各位大神代码,不胜感激

车辆质押台账.zip

79.2 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2022-12-16 14:20 | 显示全部楼层
Sub 筛选()
Dim ar As Variant
Dim arr()
Dim rng As Range
ReDim arr(1 To 50000, 1 To 24)
For Each sh In Sheets
    If InStr(sh.Name, "客户") > 0 Then
        m = m + 1
        If m = 1 Then Set rng = sh.Rows("1:2")
        rs = sh.Cells(Rows.Count, 12).End(xlUp).Row
        ar = sh.Range("a1:x" & rs)
        For i = 3 To UBound(ar)
            If Trim(ar(i, 12)) <> "" Then
                If IsDate(ar(i, 12)) Then
                    If Trim(ar(i, 23)) = "" Or IsDate(ar(i, 23)) Then
                        n = n + 1
                        For j = 1 To UBound(ar, 2)
                            arr(n, j) = ar(i, j)
                        Next j
                    End If
                End If
            End If
        Next i
    End If
Next sh
If n = "" Then MsgBox "没有符合条件的数据!": End
With Sheets("合并在库车辆")
    .[a1].CurrentRegion = Empty
    rng.Copy .[a1]
    .[a3].Resize(n, UBound(arr, 2)) = arr
End With
MsgBox "ok!"
End Sub

TA的精华主题

TA的得分主题

发表于 2022-12-16 14:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
车辆质押台账.rar (59.45 KB, 下载次数: 13)

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-16 16:31 | 显示全部楼层

您好,感谢您的帮助,我下载后发现不是我想要的结果,问题如下
1、能否去除按钮1功能,我只运行代码得出结果即可
2、筛选结果错误,您把已提车的明细也筛出了,我要的是目前在库车辆,明显不对
3、数量不对,仅是C客户目前就有356辆在库,您筛出的数量明显不对
4、能否麻烦您使用排除法筛选客户子表名称,因为最后5个子表名称,空表1,空表2,盯市价格,汇率,汇总,这5个名称后续是不变的,但是客户子表名称后续不一定包含客户两字

TA的精华主题

TA的得分主题

发表于 2022-12-16 18:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
探索伊克塞奥 发表于 2022-12-16 16:31
您好,感谢您的帮助,我下载后发现不是我想要的结果,问题如下
1、能否去除按钮1功能,我只运行代码得出 ...

除非你的表述跟你的需求不是一样的

TA的精华主题

TA的得分主题

发表于 2022-12-16 19:00 | 显示全部楼层
这句代码
If Trim(ar(i, 23)) = "" Or IsDate(ar(i, 23)) Then
修改为这样试试看看吧
If Trim(ar(i, 23)) = "" Or not IsDate(ar(i, 23)) Then

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-16 20:28 来自手机 | 显示全部楼层
3190496160 发表于 2022-12-16 19:00
这句代码
If Trim(ar(i, 23)) = "" Or IsDate(ar(i, 23)) Then
修改为这样试试看看吧

我的理解是直接按照是否空值的标准去筛选吧,不用日期函数那么复杂,您能受累再发我一个表格吗,按照我给您发的修改的意思,感谢

TA的精华主题

TA的得分主题

发表于 2022-12-16 20:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
探索伊克塞奥 发表于 2022-12-16 20:28
我的理解是直接按照是否空值的标准去筛选吧,不用日期函数那么复杂,您能受累再发我一个表格吗,按照我给 ...

给你的修改已经你连测试都懒得测试一下,甚至把我的修改意见全盘否定了,我根本就不知道要从何改起,
想帮你也是爱莫能助

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-17 12:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
3190496160 发表于 2022-12-16 20:34
给你的修改已经你连测试都懒得测试一下,甚至把我的修改意见全盘否定了,我根本就不知道要从何改起,
想 ...

抱歉啊老师,如有做的不好的地方请多包涵,昨天发烧太难受了,也没来及测试,刚看到您在第二个帖子发的结果完全正确,太感谢了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-20 07:49 , Processed in 0.042332 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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