ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 一张表中指定日期,在另一表按日期筛选非空白项目,复制区域内容粘贴到第1张表中。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-21 10:54 | 显示全部楼层 |阅读模式
各位老师:
大家好!
我是vba一小白,之前在网站中学习用过简单的VBA复制粘贴,这次由于工作量比较大,需要重复很多个表,有时会复制粘贴错误,所以想简化操作方法避免错误的发生,但这个需要选择日期筛选,我之前学习过的太过浅薄,无法得到想要的结果。
麻烦老师们出手帮帮忙。
两张表格已附上传
image.jpg image.jpg

两张表.zip

113.41 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2024-10-21 11:39 | 显示全部楼层
image.png

交纳数据提取.7z

20.54 KB, 下载次数: 5

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-10-21 11:39 | 显示全部楼层
将提取表更改为启用宏工作薄,将代码粘贴进去。然后在表格中插入图形,将图形指定该宏


  1. Sub copydata()
  2.     Dim wb1 As Workbook, wb2 As Workbook
  3.     Dim ws1 As Worksheet, ws2 As Worksheet
  4.     Dim searchValue As String
  5.     Dim lastRow1 As Long, lastRow2 As Long
  6.     Dim i As Long, j As Long
  7.     Dim found As Boolean
  8.     Set wb1 = Workbooks("交纳数据提取.xlsm")
  9.     Set wb2 = Workbooks("订单交纳.xlsx")
  10.     Set ws1 = wb1.Sheets("交纳数量提取")
  11.     Set ws2 = wb2.Sheets("订单交纳")
  12.     lastRow1 = ws1.Cells(ws1.Rows.Count, "B").End(xlUp).Row
  13.     If lastRow1 > 1 Then
  14.        ws1.Rows("2:" & lastRow1).ClearContents
  15.     End If
  16.     searchValue = ws1.Range("L1").Value
  17.     found = False
  18.     For i = 1 To ws2.Rows(1).Cells.Count
  19.         If ws2.Cells(1, i).Value = searchValue Then
  20.             found = True
  21.             Exit For
  22.         End If
  23.     Next i
  24.     If found Then
  25.         lastRow2 = ws2.Cells(ws2.Rows.Count, i).End(xlUp).Row
  26.         lastRow1 = ws1.Cells(ws1.Rows.Count, "B").End(xlUp).Row + 1
  27.         For j = 2 To lastRow2
  28.             If ws2.Cells(j, i).Value <> "" Then
  29.                 ws1.Cells(lastRow1, "B").Resize(1, 10).Value = ws2.Cells(j, "B").Resize(1, 10).Value
  30.                 ws1.Cells(lastRow1, "L").Value = ws2.Cells(j, i).Value
  31.                 lastRow1 = lastRow1 + 1
  32.             End If
  33.         Next j
  34.     Else
  35.         MsgBox "在“订单交纳”表中首行未找到对应日期"
  36.     End If
  37. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-21 13:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-21 13:04 | 显示全部楼层
autohotey 发表于 2024-10-21 11:39
将提取表更改为启用宏工作薄,将代码粘贴进去。然后在表格中插入图形,将图形指定该宏

谢谢老师,非常好用,解决了大难题,谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 13:26 , Processed in 0.028114 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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