PC和Mac之间的Range.Count差异

我正在从雅虎财经下载历史股票价格数据我需要一个数据点的数量下载。 数据本身被下载,使得行16是标题行,并且从行17开始的所有内容都是数据。 我希望工作表可以在Mac或PC上工作,这就是问题所在。

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

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

在Mac上,这给出了正确数量的数据点。 然而,在个人电脑上,我得到的答案是太多了,所以我不得不改变线看起来像这样:

 Cntr = Range(ActiveSheet.Range("A17"), ActiveSheet.Range("A17").End(xlDown)).Count Cntr = Cntr - 1 

如果您使用的是Mac或PC,Range.Count的工作方式会有所不同吗? 我想我可以通过数据循环,并得到一个计数,但这似乎是浪费。 还有其他build议吗?

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

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

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

相反,我通常使用.Find方法 。 当我需要find我的数据集中的最后一行时,我使用.Find像这样:

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

或者,find最后一列:

 Rows("1:1").Find("*",SearchDirection:=xlPrevious).Column 

这个方法总是返回最后一行/列,不pipe它是否隐藏。 对于你的应用程序,看起来像这样:

 Cntr = Range(ActiveSheet.Range("A17"), ActiveSheet.Range("A:A").Find _ ("*",SearchDirection:=xlPrevious)).Count 

请注意,此方法仅适用于假设在数据集下面没有任何其他表或数据集,您需要查找最后一行数据。 这种方法确实可以在指定的行/列中find包含数据的最后一个单元格。