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

Excel VBA代码无法将数据正确输出至单个单元格问题求助

问题原因

你当前的代码嵌套逻辑错误,外循环每执行1次,内层都会完整遍历所有可见且名称不为「Log」的工作表,每次遍历都会直接覆盖当前目标单元格的取值,最终每个单元格只会保留最后一个工作表的统计值,和你预期的每个单元格对应一个工作表统计结果的逻辑不符。

修改后代码

Sub Totals()
    Dim wrksheet As Worksheet
    Dim Ttls As Long
    Dim x As Long
    ' 初始化列计数器,从G列(第1位)开始写入
    x = 1
    For Each wrksheet In ActiveWorkbook.Worksheets
        If wrksheet.Visible And wrksheet.Name <> "Log" Then
            With wrksheet
                Ttls = .Range("B2", .Range("B" & .Rows.Count).End(xlUp)).Rows.Count
                Worksheets("Log").Range("G17").Offset(0, x - 1).Value = Ttls
            End With
            ' 完成一个工作表的写入,计数器+1切换到右侧下一个单元格
            x = x + 1
            ' 如果你明确要求最多只输出4个结果,可放开下面的注释
            ' If x > 4 Then Exit For
        End If
    Next wrksheet
End Sub

修改说明

  • 移除了外层冗余的固定x循环,改用动态计数器标记写入位置,可自动适配符合条件的工作表数量
  • 修正了Ttls的变量类型,行数统计直接用Long类型即可,无需使用Variant也不需要调用Transpose转置
  • 遍历工作表的过程中完成一个统计就写入对应单元格,不会出现内容覆盖的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:02