如何将Excel中各型号的年份区间拆分为逐年单独行?
解决Excel中年份区间拆分为单独行的问题
原始数据
| Model | Year | Year |
|---|---|---|
| A | 2010 | 2012 |
| B | 2013 | 2020 |
期望结果
| Model | Year |
|---|---|
| A | 2010 |
| A | 2011 |
| A | 2012 |
| B | 2013 |
| B | 2014 |
| B | 2015 |
| B | 2016 |
| B | 2017 |
| B | 2018 |
| B | 2019 |
| B | 2020 |
方法一:Power Query(推荐,无公式/VBA)
- 选中原始数据区域,点击数据选项卡 → 从表格/区域(Excel 2016及以后版本可用,旧版本需安装Power Query插件)
- 在编辑器里先把两个重复的
Year列重命名为StartYear和EndYear,避免列名冲突 - 选中
Model列,按住Ctrl选StartYear和EndYear列,点击添加列 → 自定义列,输入公式:
这会生成包含年份序列的列表{[StartYear]..[EndYear]} - 选中新生成的自定义列,点击转换 → 展开到新行
- 删除
StartYear和EndYear列,把展开后的年份列重命名为Year,最后点击关闭并上载,结果会输出到新工作表
方法二:公式+筛选(适合轻量数据)
- 在原始数据旁插辅助列D,D2单元格输入公式,下拉填充到足够覆盖最长年份区间的行数:
=IF(ROW(A1)<=($C2-$B2+1), $A2, "") - 插辅助列E,E2单元格输入公式,同样下拉填充:
=IF(D2<>"", $B2+ROW(A1)-1, "") - 选中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
相关产品推荐
相关产品推荐

