Excel VBA如何循环实现多列指定区域除以列末值并输出到对应列
VBA 实现多列批量计算解决方案
你可以在外层新增一列循环变量,遍历A到L列(对应列号1~12),同时动态匹配输出列位置即可,优化后的代码如下:
Sub Divide_a_range_by_last_number() Dim i As Long ' 行循环变量 Dim col As Long ' 源数据列循环变量 Dim ws As Worksheet ' 提前绑定工作表,避免重复引用,提升运行效率 Set ws = Worksheets("sheet1") ' 外层循环遍历A到L列(列号1到12) For col = 1 To 12 ' 内层循环遍历2到9行的待计算值 For i = 2 To 9 ' 输出列规则:A列对应N列(14)、B列对应O列(15),依次向后偏移 ' 输出行规则:源行2对应输出行1,以此类推,所以行号做减1处理 ws.Cells(i - 1, 14 + col - 1).Value = ws.Cells(i, col).Value / ws.Cells(10, col).Value Next i Next col End Sub
代码说明
- 新增
col变量作为源列的循环变量,遍历范围112对应AL列 - 直接取各列第10行作为分母,比原代码的
End(xlDown)稳定性更高,避免列中间存在空值时取错末尾单元格的问题 - 如果后续列末尾值位置不固定,可以把分母部分替换为
ws.Cells(ws.Rows.Count, col).End(xlUp).Value,自动识别每列最后一个有值的单元格作为分母
内容的提问来源于stack exchange,提问作者Donna
相关产品推荐
相关产品推荐

