将基数为1的数组转换为基数为0的数组

9

我正在从Excel中检索数据,希望保持我的数组为0基础,但Excel返回1基础。是否有相对简单的方法可以将数组从1基转换为0基?或者我只需要创建一个循环?

以下是示例代码:

dim oData(,) as object
dim rng as range
dim wks as worksheet = xlApp.Activeworkbook.sheets(Sheet1)

rng=wks.Range("A1:B2")

oData=rng.Value2

是的 - 循环。虽然我不确定这是否是一个好的做法 - 任何熟悉VBA工作原理的人都会知道,从Range().Value获取的变量数组是基于1的:如果你将其改为基于0的,可能会引起更多问题,特别是如果其他人最终维护你的代码。 - Tim Williams
是的,我不确定在VB.NET中如何完成这项工作,我正在使用我从Excel 2003执行文件制作的库,并且认为由于此原因可能会有所不同。我知道Excel-DNA返回基于零的数组,所以我猜想这就是我假设在.NET中基于0的标准的原因。我想我会坚持使用基于1的数组。如果您将您的评论作为答案,我将标记它为正确,除非现在和那时有其他更好的答案。 - Jon49
@TimWilliams,我刚注意到你在谈论VBA。所以我猜你没有回答我的.NET问题。好吧,也许其他人会试一试! - Jon49
1
我主要是在谈论改变Excel派生对象的“本地”行为。然而,在您之前提出的问题的先前版本中有一些建议,链接在这里:https://dev59.com/2nI_5IYBdhLWcg3wK_s6 - Tim Williams
1个回答

8
循环是最简单的选项。
Dim target as string(0 to oData.Length - 1)

For index = 1 to oData.Length 
   target(index - 1) = oData(index)
Next

这只是我凭记忆写的,没有测试过,但很显然。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接