gpt4 book ai didi

excel - PC 和 Mac 之间的 Range.Count 差异

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

我正在从 Yahoo Finance 下载历史股价数据,我需要计算下载的数据点数。数据本身被下载,因此第 16 行是标题行,从第 17 行开始的所有内容都是数据。我希望这张表可以在 Mac 或 PC 上工作,这就是问题所在。

我用于数据点数量的代码是:

Dim Cntr As Long
Cntr = Range(ActiveSheet.Range("A17"), ActiveSheet.Range("A17").End(xlDown)).Count

在 Mac 上,这给出了正确数量的数据点。但是,在 PC 上,我得到的答案是 1 太多,所以我必须将行更改为如下所示:
Cntr = Range(ActiveSheet.Range("A17"), ActiveSheet.Range("A17").End(xlDown)).Count
Cntr = Cntr - 1

Range.Count 的工作方式是否取决于您使用的是 Mac 还是 PC?我想我可以遍历数据并以这种方式进行计数,但这似乎很浪费。还有其他建议吗?

我正在使用 Excel for Mac 2011(OS X Mavericks)和 Excel 2010(64 位 Windows 7 - 通过 Boot Camp 和 Parallels 9)

最佳答案

据我所知,MAC 和 PC 在这方面应该没有任何区别。

当我需要返回包含数据的最后一行或最后一列时,我通常避免使用 .End(xlDown) (或变体),因为当行被隐藏或列/行具有不连续的数据时,它可能不可靠。

相反,我通常使用 .Find method为了这。当我需要查找数据集中的最后一行时,我使用 .Find像这样:

Range("A:A").Find("*",SearchDirection:=xlPrevious).Row

或者,要查找最后一列:
Rows("1:1").Find("*",SearchDirection:=xlPrevious).Column

此方法将始终返回最后一行/列,无论它是否隐藏。对于您的应用程序,它看起来像这样:
Cntr = Range(ActiveSheet.Range("A17"), ActiveSheet.Range("A:A").Find _ 
("*",SearchDirection:=xlPrevious)).Count

请注意,此方法仅在您需要为其查找最后一行数据的数据集下方没有任何其他表或数据集的情况下才有效。此方法确实确实找到了指定行/列中具有数据的最后一个单元格。

关于excel - PC 和 Mac 之间的 Range.Count 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20817567/

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