【问题标题】:Averaging a Column in a Named Range平均命名范围中的列
【发布时间】:2018-04-23 19:18:21
【问题描述】:

完全和完全的新手 - 但由于我的 Excel VBA 傻瓜编程无济于事,我希望你们都可以。

我有各种计划的员工每月评估分数。各种程序被分解成不同的工作簿。数据不同,员工人数每月波动,所以我试图创建尽可能相关的公式(即没有特定的单元格)我每月重复这个函数并将滚动数据粘贴到工作簿中以供后代使用,所以行开始更改以及每个月的行数。

也就是说,我使用的是命名范围(“April18”),我只需要“April18”中的一列的平均值。我很可能每个月都会更改命名范围并在我的宏中进行编辑。

基本上,如何在“April18”的命名范围内获得 B:B 的平均值

代码:

 Do
    Dim x
    For x = 1 To 5
        ActiveCell.Select
        Selection.NumberFormat = "0\%"
        ActiveCell.Offset(0, 1).Activate
    Next x
    ActiveCell.FormulaR1C1 = "=SUM(RC[-5]:RC[-1])/100"
    Selection.Style = "Percent"
    ActiveCell.Offset(0, 1).Activate
    ActiveCell.FormulaR1C1 = "=IF(OR(RC[-1]>85%,RC[-1]=85%),""Pass"",""Fail"")"
    ActiveCell.Offset(1, -6).Activate
Loop Until ActiveCell.Value = ""

谢谢!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    使用 Application.WorksheetFunction.Index 获取列

    With Application.WorksheetFunction
        Dim Sm as Double
        Sm = .Average(.Index(Range("April18"),0,2))
        Debug.Print Sm
    End with
    

    其中2 是您想要的命名范围的列号。

    【讨论】:

    • 嗨斯科特 - 感谢您的帮助!不幸的是,你的计算对我不起作用。我试图将平均值放入“April2018”中最后一行下方的行中。我不确定这是否会改变您的答案。我需要学习如何发布宏,看看是否有帮助。
    • 只需使用编辑将代码放在原始帖子中即可。然后突出显示它并按 Ctrl-k 以格式化为代码。如果你不能,有人会帮助格式化它。
    • 我还应该说我已经在我想要在上次计算后使用偏移量进行计算的单元格中。
    • 这只是一个示例,您可以简单地将Sm 中的值分配给您想要的任何单元格。
    • 不要在cmets中发布代码,在原帖中发布。
    猜你喜欢
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多