请求优化金字塔式摊销下拉Macro:实现自动选取对应列下一个数据字段
优化金字塔式摊销数据下拉宏:自动选取下一个数据字段
核心实现思路
通过定位数据列的最后一个非空行,自动获取下一行的字段作为新数据源,同时动态定位输出区域的起始位置,彻底省去手动录入操作。以下是适配你需求的VBA代码示例:
Sub 自动金字塔摊销下拉() Dim 目标工作表 As Worksheet Dim 最后数据行 As Long Dim 下一个数据单元格 As Range Dim 输出起始行 As Long Dim 期数序号 As Integer, 总摊销期数 As Integer ' 指定工作表,替换成你实际的工作底稿表名 Set 目标工作表 = ThisWorkbook.Worksheets("摊销数据") ' 自动定位数据列(示例为A列)的下一个待选字段 最后数据行 = 目标工作表.Cells(目标工作表.Rows.Count, "A").End(xlUp).Row Set 下一个数据单元格 = 目标工作表.Cells(最后数据行 + 1, "A") ' 检查是否还有未使用的数据字段 If 下一个数据单元格.Value = "" Then MsgBox "数据列已无后续字段可选取!", vbExclamation Exit Sub End If ' 自动定位输出列(示例为B列)的下一个空白起始行 输出起始行 = 目标工作表.Cells(目标工作表.Rows.Count, "B").End(xlUp).Row + 1 ' 可改为从单元格读取总摊销期数,比如:总摊销期数 = 目标工作表.Cells(1, "C").Value 总摊销期数 = 6 ' 金字塔式填充逻辑:第n期向下填充n行 For 期数序号 = 1 To 总摊销期数 目标工作表.Cells(输出起始行 + 期数序号 - 1, "B").Resize(期数序号).Value = 下一个数据单元格.Value Next 期数序号 ' 可选:标记已使用的字段,避免重复选取(不需要可删除此行) 下一个数据单元格.Interior.Color = RGB(217, 217, 217) End Sub
关键细节调整提示
- 替换代码中的工作表名、数据列("A")、输出列("B")为你实际的对应位置
- 总摊销期数可以改成从固定单元格读取,比如从C1单元格获取就把
总摊销期数 = 6换成总摊销期数 = 目标工作表.Cells(1, "C").Value - 如果不需要标记已使用字段,直接删除
下一个数据单元格.Interior.Color = ...这一行
内容的提问来源于stack exchange,提问作者Twitter Vee
相关产品推荐
相关产品推荐

