ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教一个按系统月份来循环复制粘贴到所需单元格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-6 09:05 | 显示全部楼层 |阅读模式


image.jpg


明细表里的L2:M13是固定的,每个月会统计上个月的数据
汇总表里面是要将每年1-12月的明细表的数据复制到里面
现在请教一下怎么能按系统的月份来进行复制
如 现在是3月份,就将明细表里的L2:M13复制到汇总表里面2月下面的D4:E15里面,
如 现在是4月份,就将明细表里的L2:M13复制到汇总表里面3月下面的F4:G15里面,
.........
如 现在是12月份,就将明细表里的L2:M13复制到汇总表里面1月下面的B4:C15里面,
一直这样循环一年12个月
单位的顺序是固定的了,只需处理数据就好
image.jpg

按系统月份复制.zip

22.33 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2024-3-6 09:14 | 显示全部楼层
思路一:
1.将表格月份位置写入到字典中
2.获取当前系统月份,msgbox弹窗提示是否执行
3.将系统月份作为key,从字典提取出对应列位置,确定写入范围
4.打开对应表格,复制粘贴

思路二:
1.获取当前系统月份,msgbox弹窗提示是否执行
2.当前月份-1,循环表格判断哪个与它一致,确定对应列位置
3.打开对应表格,复制粘贴

TA的精华主题

TA的得分主题

发表于 2024-3-6 09:47 | 显示全部楼层
本帖最后由 fzxba 于 2024-3-6 10:24 编辑

按系统月份复制.rar (33.26 KB, 下载次数: 4)


补-按1楼描述重写.zip (33.62 KB, 下载次数: 6)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-3-7 09:51 | 显示全部楼层
Sub 每月明细汇总()
   
    ' 问题来源:https://club.excelhome.net/threa ... tml?_dsign=065ac418
    ' 时间:2024-3-6
    ' 需求:将每月产生的明细表上的数据,在次月初汇总到按月的汇总表上
    ' 条件:每月产生的明细表数据格式是一样的;数据存放于同一目录中
    ' 汇总的同时,将“明细”表备份到汇总工作簿上。
   
    yf = Month(Date)          ' 取得月份值
    If yf = 1 Then
      bmc = "12月"            ' 电脑系统时间为1月初,则汇总12月的
    Else
      bmc = yf - 1 & "月"     ' 月初汇总上月的数据
    End If
    Dim wb As Workbook                    ' 定义wb为工作簿变量
    Application.DisplayAlerts = False     ' 此句的作用:删除表时不出现“是否删除的对话框”
    myname = ThisWorkbook.Name            ' 这个工作的名称
    mypath = ThisWorkbook.Path            ' 这个工作的路径
    For ii = 1 To Worksheets.Count        ' 按工作表数量循环
       If Worksheets(ii).Name = bmc Then  ' 通过循环判断,来完成指定表名是否存在的查找
          Worksheets(ii).Delete           ' 删除表
          Exit For
       End If
    Next ii                                      ' 这个循环是删除已有数据表
    Sheets.Add.Name = bmc                        ' 增加表,并起名为 BMC 变量中的值
    Sheets(bmc).Move after:=Sheets(Sheets.Count) ' 将刚新增的表移动到最右侧 Cells.Select Selection.NumberFormatLocal = "@"
    Cells.Select
    Selection.NumberFormatLocal = "@"            ' 单元格设置成文本格式
    '---先准备好空表,以备粘贴用
    f = ThisWorkbook.Path & "\明细.xlsx"         ' 为方便判断
    If Dir(f) = "" Then MsgBox "文件不存在!", 64: Exit Sub  ' 如果表不存在,则退出VBA
    Set wb = Workbooks.Open(mypath & "\明细.xlsx")           ' 打开“明细”表
    wb.ActiveSheet.Select                                    ' 选定活动工作表
    Cells.Copy                                               ' 复制整个表
   
    Windows(myname).Activate       ' 切换活动窗口到汇总表
    ActiveSheet.Paste              ' 粘贴,对“明细”表进行备份留存
    Windows("明细.xlsx").Activate  ' 又切换活动窗口到“明细”
    ActiveWindow.Close             ' 关闭刚打开的“明细”工作簿
    Windows(myname).Activate       ' 回到“汇总”工作簿的窗口
    For y = 2 To 24 Step 2
      If Sheets("汇总").Cells(2, y).Value = bmc Then
        kk = y                     ' 确定当前要汇总数据的列位置
      End If
    Next y
    gg = 2    ' 开始数据的汇总
    Do While Not (IsEmpty(Sheets(bmc).Cells(gg, 11).Value))
      hz = 4
      Do While Not (IsEmpty(Sheets("汇总").Cells(hz, 1).Value))
        If Sheets("汇总").Cells(hz, 1).Value = Sheets(bmc).Cells(gg, 11).Value Then
          Sheets("汇总").Cells(hz, kk).Value = Sheets(bmc).Cells(gg, 12).Value
          Sheets("汇总").Cells(hz, kk + 1).Value = Sheets(bmc).Cells(gg, 13).Value
        End If
        hz = hz + 1
      Loop
      gg = gg + 1
    Loop      ' 数据汇总结束
    Application.DisplayAlerts = True
    Sheets("汇总").Select
    Range("A1").Select
End Sub

2007版本测试通过。 因为办公电脑有加密,所以,不发附件
觉得有益,请送鲜花

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-7 15:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wengjl 发表于 2024-3-7 09:51
Sub 每月明细汇总()
   
    ' 问题来源:https://club.excelhome.net/thread-1686185-1-1.html?_dsign= ...

你这里是不是多了一步,将明细表的复制到汇总,再将数据复制到汇总表里?

TA的精华主题

TA的得分主题

发表于 2024-3-8 09:08 | 显示全部楼层
本帖最后由 wengjl 于 2024-3-8 09:10 编辑
mohao 发表于 2024-3-7 15:10
你这里是不是多了一步,将明细表的复制到汇总,再将数据复制到汇总表里?

我的想法是:你从系统里导出来的,每月都叫明细,当前月的会把以前的覆盖掉。复制到汇总工作簿是保留原始的,以作备份。这是我66岁的经验哦!

在宏开始 的 5行注释中的第5行已作了说明。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 09:26 , Processed in 0.043916 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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