借助deepseek和vba编程实现一张表格数据转移到多张工作簿的表格中

核心目标

  • 将工作表中的内容按村社名称分类放入对应位置的目标工作簿的第一个工作表的对应位置
    在这里插入图片描述
    在这里插入图片描述

deepseek提问方式

  • 你是一个擅长vba编程的专家,核心目标是奖工作表中的部分内容按下列要求写入对应工作簿的第一个工作表中。第一,在工作表A列中筛选出相同单元格内容的行,第二,选择单元格内容与“_2024年盘点表电子表”之前内容一致的工作簿的第一个表格;第三,将工作表中筛选出的行的C列至G列内容从工作簿的第一个表格的C5单元格开始写入。

vba代码

Sub TransferData()
    Dim srcWS As Worksheet, destWB As Workbook
    Dim lastRow As Long, i As Long, rng As Range
    Dim keyName As String, fileName As String
    Dim destWS As Worksheet
    
    Set srcWS = ThisWorkbook.Sheets("Sheet1") ' 源工作表
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    lastRow = srcWS.Cells(srcWS.Rows.Count, "A").End(xlUp).Row
    
    ' 创建字典用于分组
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    ' 分组数据
    For i = 8 To lastRow ' 假设数据从第8行开始
        keyName = srcWS.Cells(i, 1).Value
        If keyName <> "" Then
            If Not dict.Exists(keyName) Then
                dict.Add keyName, New Collection
            End If
            dict(keyName).Add i
        End If
    Next i
    
    ' 处理每个分组
    Dim key As Variant, cell As Variant
    For Each key In dict.Keys
        fileName = ThisWorkbook.Path & "\" & key & "_2024年盘点表电子表.xls"
        
        If Dir(fileName) <> "" Then
            Set destWB = Workbooks.Open(fileName)
            Set destWS = destWB.Sheets(1)
            
            ' 查找目标起始行
            Dim startRow As Long
            startRow = 5 ' C5对应行号为5
            
            For Each cell In dict(key)
                ' 复制C-G列数据
                srcWS.Range("C" & cell & ":G" & cell).Copy
                destWS.Cells(startRow, 3).PasteSpecial xlPasteValues
                startRow = startRow + 1
            Next cell
            
            destWB.Close SaveChanges:=True
        Else
            MsgBox "未找到工作簿:" & fileName, vbExclamation
        End If
    Next key
    
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    MsgBox "数据转移完成!"
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值