2012-01-31 18 views
8

Estoy recuperando datos de Excel y me gustaría mantener mis matrices basadas en 0, pero Excel devuelve 1 base. ¿Hay una manera bastante simple de volver a cambiar la matriz de 1 a 0 base? ¿O solo necesito crear un bucle?Cambiar matriz de base 1 a base 0 matriz

He aquí un ejemplo de código aquí:

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

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

oData=rng.Value2 
+0

Sí - lazo. Sin embargo, no estoy seguro de que sea una buena práctica: cualquiera que esté familiarizado con el funcionamiento de VBA sabrá que la matriz variante de Range(). Value está basada en 1: si la cambia a 0 puede causar más problemas de los que resuelve , especialmente si alguien más termina manteniendo tu código. –

+0

Sí, no estaba seguro de cómo se hizo en VB.NET, estoy usando una biblioteca que hice desde el archivo de ejecución de Excel 2003 y pensé que podría ser diferente debido a eso. Sé que Excel-DNA devuelve una matriz basada en cero, así que supongo que es por eso que asumí que era estándar estar basado en 0 en .NET. Supongo que me quedaré con una matriz basada en 1. Si pones tu comentario como una respuesta, lo marcaré como correcto, a menos que alguien presente con una mejor respuesta de aquí a entonces. – Jon49

+0

@TimWilliams, me di cuenta de que hablabas de VBA. Así que supongo que no respondiste mi pregunta para .NET. Bueno, tal vez alguien más le dará una oportunidad! – Jon49

Respuesta

7

Un bucle es la opción más sencilla.

Dim target as string(0 to oData.Length - 1) 

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

Eso es de memoria y no probado, pero es lo suficientemente obvio.

Cuestiones relacionadas