gpt4 book ai didi

vba - Excel VBA-平均工作表中的所有数字单元格

转载 作者:行者123 更新时间:2023-12-04 21:25:29 26 4
gpt4 key购买 nike

我正在尝试创建一个宏来迭代工作表中所有使用的单元格并返回平均值。
最终目标是获取每个工作表中数字的平均值,并生成带有平均值的折线图。

我很难理解如何做到这一点。我现在的策略(这可能不是最佳的)包括 a) 找到具有数字数据的第一行; b) 找到具有数字数据的第一列; c) 找到带有数字数据的最后一行; d) 找到带有数字数据的最后一列; d) 在这些单元格上创建一个范围; e) 平均范围

这是我当前的代码

Sub AverageAllNumbers()
Dim fRow As Long
Dim fColumn As Long
Dim lRow As Long
Dim lColumn As Long
Dim dblAverage As Long
Dim averageRange As Range

fRow = Cells.Find(What:=Number, SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
fColumn = Cells.Find(What:=Number, SearchOrder:=xlByColumns, SearchDirection:=xlNext).Column
lRow = Cells.Find(What:=Number, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lColumn = Cells.Find(What:=Number, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

averageRange = Range(Cells(fRow, fColumn), Cells(lRow, lColumn))

dblAverage = Application.WorksheetFunction.Average(averageRange)
MsgBox dblAverage

End Sub

几乎没有任何效果——'lColumn' 产生 16384,而 fRow 和 fColumn 产生 1,这在我的电子表格中甚至不是一个使用过的单元格。

这是怎么回事?

最佳答案

您是否尝试过使用 Worksheet.UsedRange属性(property)?

Sub AverageAll()
Dim average As Double
Dim averageRange As Range

' Set averageRange to UsedRange; no need to find it ourselves.
Set averageRange = ActiveSheet.UsedRange

average = Application.WorksheetFunction.average(averageRange)
MsgBox average
End Sub

它在一个测试用例中对我有用,尽管它是微不足道的。

关于vba - Excel VBA-平均工作表中的所有数字单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17178121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com