如何在Excel 2016中生成人员起始年至本年的年度扩展表(无宏)
在Excel 2016中生成年度数据列表(无宏方案)
假设你有一张输入表(比如Sheet1),A列是人员姓名,B列是各自的起始年份,要生成一张新表,每个人员对应从起始年到当前年的每一个年度数据,以下是两种不用宏的可行方法:
方法一:公式+手动填充(适合小数据量)
当前年份用YEAR(TODAY())自动获取,无需手动修改年份。
新建Sheet2,在A2单元格输入数组公式,按Ctrl+Shift+Enter确认(输入后公式会自动被大括号包裹):
=INDEX(Sheet1!$A$2:$A$100,INT((ROW(A1)-1)/(YEAR(TODAY())-Sheet1!$B$2:$B$100+1))+1)将公式里的
$A$2:$A$100和$B$2:$B$100替换为你实际的输入数据范围,然后下拉填充到足够多的行(预估所有人员的年度总行数即可)。在Sheet2的B2单元格输入另一组数组公式,同样按Ctrl+Shift+Enter确认:
=INDEX(Sheet1!$B$2:$B$100,INT((ROW(A1)-1)/(YEAR(TODAY())-Sheet1!$B$2:$B$100+1))+1)+MOD(ROW(A1)-1,YEAR(TODAY())-Sheet1!$B$2:$B$100+1)同样下拉填充到对应行。
最后删除填充后出现的错误值行,即可得到目标表。
方法二:Power Query(获取和转换)法(高效处理大数据)
Excel 2016自带的“获取和转换”工具无需启用宏,操作更省心:
选中输入数据的整个区域(包括表头),点击顶部菜单栏的数据→从表格,弹出窗口勾选“表包含标题”后确定,进入Power Query编辑器。
选中“起始年份”列,点击添加列→自定义列,在公式框中输入:
= {[起始年份]..Year(DateTime.LocalNow())}给新列命名为“年份列表”,点击确定后,每个单元格会生成对应年份的序列列表。
选中“年份列表”列,点击转换→展开到新行(图标为向下箭头加“展开到新行”字样),表格会自动把每个年份拆成单独的行。
若不需要原“起始年份”列,右键点击该列选择删除。
点击主页→关闭并上载,选择将数据上载到新工作表,直接得到目标结果。
内容的提问来源于stack exchange,提问作者jkeys
相关产品推荐
相关产品推荐

