2017-03-09 2 views
1

指定した範囲から返された値をループする方法はありますか?C#範囲から受け取った相互ループループの値

私は、次のコードを試してみましたが、それは返します

は、型の式に[]でインデックス付けを適用することはできません 'のSystem.Array'

var rng = (Excel.Range)sheet.Range[sheet.Cells[3, 2], sheet.Cells[3, 27]]; 
var wsValues = rng.Cells.Value; 
for (var j = 0; j < wsValues.Length; j++) 
{ 
    var test = wsValues[j]; 
} 

enter image description here

答えて

1

そのを(正常な配列ではない)システム配列です(エラーに基づいています)。だからあなたが使用できるようにする必要がありますvar test = wsValues.GetValue(1, j);これは、オブジェクトを返すことに注意してください。だからあなたはあなたの予想されるタイプにキャストをしなければならないでしょう。

この場合の1は、すべてのテストデータが多次元配列の最初の値として1を持つためです。多次元配列をx座標とy座標でグリッドとして表示することができます。そうすれば、(複数の列を1つではなく複数の列を使用しているかのように)適切に反復処理したい場合に便利です。そして、あなたはどうしたらこの中

for (var x = 1; x <= wsValues.GetLength(0); x++) 
{ 
    for (var y = 1; y <= wsValues.GetLength(1); y++) 
    { 
     var test = wsValues[x, y]; 
    } 
} 

をGETLENGTHコマンドは、その次元の長さを返しますので、最初のものがありますどのように多くの「列」または最大x値の長さを返し、2つ目リターン最大y値またはそこにある行の数。

+0

'var test = wsValues.GetValue(j)'を試してみました。 '配列は1次元配列ではありませんでした。 ' – Valip

+0

これは多次元配列なので、適切な検索を行うために答えを編集します。 –

+0

'x = 0'、' y = 0'の ''インデックスは配列の境界の外にあります。 – Valip

関連する問題