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

如何将Excel中各型号的年份区间拆分为逐年单独行?

解决Excel中年份区间拆分为单独行的问题

原始数据

ModelYearYear
A20102012
B20132020

期望结果

ModelYear
A2010
A2011
A2012
B2013
B2014
B2015
B2016
B2017
B2018
B2019
B2020

方法一:Power Query(推荐,无公式/VBA)

  1. 选中原始数据区域,点击数据选项卡 → 从表格/区域(Excel 2016及以后版本可用,旧版本需安装Power Query插件)
  2. 在编辑器里先把两个重复的Year列重命名为StartYear和EndYear,避免列名冲突
  3. 选中Model列,按住Ctrl选StartYear和EndYear列,点击添加列 → 自定义列,输入公式:
    {[StartYear]..[EndYear]}
    
    这会生成包含年份序列的列表
  4. 选中新生成的自定义列,点击转换 → 展开到新行
  5. 删除StartYear和EndYear列,把展开后的年份列重命名为Year,最后点击关闭并上载,结果会输出到新工作表

方法二:公式+筛选(适合轻量数据)

  1. 在原始数据旁插辅助列D,D2单元格输入公式,下拉填充到足够覆盖最长年份区间的行数:
    =IF(ROW(A1)<=($C2-$B2+1), $A2, "")
    
  2. 插辅助列E,E2单元格输入公式,同样下拉填充:
    =IF(D2<>"", $B2+ROW(A1)-1, "")
    
  3. 选中D、E列,按Ctrl+G定位空值,删除整行,最后整理D、E列为Model和Year即可

方法三:VBA代码(适合大量数据批量处理)

按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码:

Sub SplitYearRange()
    Dim wsSource As Worksheet, wsTarget As Worksheet
    Dim lastRow As Long, i As Long, j As Long
    Dim startYear As Integer, endYear As Integer
    
    Set wsSource = ActiveSheet
    Set wsTarget = ThisWorkbook.Worksheets.Add
    
    '写入表头
    wsTarget.Range("A1") = "Model"
    wsTarget.Range("B1") = "Year"
    
    lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
    targetRow = 2
    
    For i = 2 To lastRow
        startYear = wsSource.Cells(i, "B").Value
        endYear = wsSource.Cells(i, "C").Value
        
        For j = startYear To endYear
            wsTarget.Cells(targetRow, "A").Value = wsSource.Cells(i, "A").Value
            wsTarget.Cells(targetRow, "B").Value = j
            targetRow = targetRow + 1
        Next j
    Next i
    
    wsTarget.Columns.AutoFit
End Sub

回到Excel按F5运行代码,结果会生成在新工作表中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:25:23