You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据偏移/字符串匹配从总表提取数据到同工作簿多工作表指定列

需求说明
  • 将N60单元格的取值粘贴到O17单元格
  • 把不同表格的其余所有数据,填入同一工作簿内所有工作表的指定列
总表数据格式

总表数据格式

修正后VBA代码

原有参考代码存在目标列笔误(将字母O写为数字0),且缺少N60到O17的赋值逻辑,修正后可用代码如下:

Sub Data_Click()
    Dim wkSht As Worksheet
    Dim cell As Range
    Dim lastrow As Long, blankRow As Long, offsetRow As Long
    
    ' 获取Combine总表已使用的最大行号
    lastrow = Sheets("Combine").UsedRange.Rows.Count

    ' 遍历Combine总表A列从第2行开始的所有单元格
    For Each cell In Sheets("Combine").Range("A2", "A" & lastrow).Cells
        ' 遍历当前工作簿所有工作表
        For Each wkSht In ThisWorkbook.Worksheets
            ' 匹配总表A列值和工作表名称
            If cell.Value = wkSht.Name Then
                ' 计算当前分组的空白行位置
                If cell.End(xlDown).Row > lastrow Then
                    blankRow = lastrow
                Else
                    blankRow = cell.End(xlDown).Row - 1
                End If
                ' 计算偏移行数
                offsetRow = Application.WorksheetFunction.RoundDown(Sheet1.Cells(blankRow, 12).Value, 0)
                ' 按需求复制指定列数据到对应工作表的B17起始位置
                Sheets("Combine").Range(cell.Offset(0, 13), cell.Offset(offsetRow, 13)).Copy wkSht.Range("B17")
                ' 修正原代码笔误:将数字0改为字母O,对应O17单元格
                Sheets("Combine").Range(cell.Offset(0, 18), cell.Offset(offsetRow, 18)).Copy wkSht.Range("O17")
                ' 新增需求逻辑:将N60单元格值粘贴到当前工作表的O17单元格
                wkSht.Range("O17").Value = Sheets("Combine").Range("N60").Value
            End If
        Next wkSht
    Next cell
End Sub
代码使用说明
  • 代码默认总表名称为Combine,如果你的总表名称不同,需自行替换代码中所有Sheets("Combine")里的表名
  • 列偏移量是基于你提供的参考代码保留,如果实际总表列顺序有调整,可自行修改Offset的第二个参数值

内容的提问来源于stack exchange,提问作者Samiul30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:24:08