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

如何将Sheet1的姓名列表按间隔17行导入Sheet2的B列?

解决Sheet1姓名按间隔17行导入Sheet2的方法

方法一:公式法(无需VBA)

在Sheet2的B2单元格输入以下公式,然后下拉填充至足够覆盖200个姓名的行(最终目标行约为 2 + 199*17 = 3385 行):

=IFERROR(INDEX(Sheet1!$B:$B, INT((ROW()-2)/17)+1), "")

公式逻辑:

  • ROW() 获取当前单元格的行号
  • (ROW()-2)/17 计算当前行与起始行(B2)的间隔倍数,用INT()取整得到Sheet1中姓名的对应行偏移量
  • 加1后通过INDEX()提取Sheet1!B列中对应行的姓名
  • IFERROR() 确保超出200个姓名范围的单元格显示空白,避免出现#N/A错误

方法二:VBA宏方法(批量自动处理)

如果需要一次性完成200个姓名的导入,无需手动下拉公式,可使用VBA宏:

  1. 按下 Alt + F11 打开VBA编辑器
  2. 右键点击工作簿名称,选择「插入」→「模块」
  3. 将以下代码粘贴到模块中:
Sub ImportNamesWithGap()
    Dim wsSource As Worksheet, wsTarget As Worksheet
    Dim lastSourceRow As Long, i As Long, targetRow As Long
    
    ' 定义源工作表和目标工作表
    Set wsSource = ThisWorkbook.Sheets("Sheet1")
    Set wsTarget = ThisWorkbook.Sheets("Sheet2")
    
    ' 获取Sheet1中B列最后一个有数据的行号
    lastSourceRow = wsSource.Cells(wsSource.Rows.Count, "B").End(xlUp).Row
    
    ' 循环导入每个姓名到目标位置
    For i = 1 To lastSourceRow
        targetRow = 2 + (i - 1) * 17 ' 计算Sheet2中的目标行号
        wsTarget.Cells(targetRow, "B").Value = wsSource.Cells(i, "B").Value
    Next i
End Sub
  1. 按下 F5 运行宏,所有姓名会自动按要求填入Sheet2的对应位置

补充说明:

你之前尝试OFFSET公式失败,大概率是因为OFFSET对非整数偏移量的处理会出错(比如非目标行的(ROW()-2)不是17的倍数时,偏移量为小数,导致引用失效)。而INDEX+INT的组合可以规避这个问题,无论当前行是否为目标行,都能正确匹配Sheet1中的姓名行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:22:16