2012-05-16 11 views
8

私は30データポイントを取得するハードウェアを持っています。これらの各点は、シートが見えるようになる前に、いくつかの異なる場所でスプレッドシートに記録され、次に別のプログラムがスプレッドシートを引き継ぎます。これらの値はすべて、他のプログラムが引き継ぐ前にスプレッドシートに書き込まれている必要があります。各セルを個別に書き込むと、書き込みは約50msかかるため、データ取得を完了するのに約1.25秒かかります。C#では、Excel Interopを使用して複数のセル値の書き込みを高速化する方法を教えてください。

スプレッドシートにすべての値を一度に書き込むことができれば、これらのすべてのセルの書き込みが大幅にスピードアップすると思います。私が見る問題は、データが連続していないため連続したセルを更新するためにRangesがうまく機能することです。 =
F8 = 2012年12月25日
D53 = 4.1235
B2 = 5

私が持っているの
A1 = 1
B23を:基本的に、これは私が書きたいものの一例になります"A1、B23、F8、D53、B2"の範囲を作成してから、値の配列を使用して値を設定してみました。私は、オブジェクト[5]、オブジェクト[1,5]、オブジェクト[5,1]という3つの異なる配列を試しました。これらはすべて、範囲内の指定されたセルの値を、すべての場合に作成した配列の最初のインデックスに設定します。

一度に1つずつセルを反復処理せずにこれらの30個のセルデータを更新する方法はありますか?

おかげで、 トム

+0

あなたが言ったようにこれが解決された場合。 Eugene Ryabtsevの答えを受け入れてください。 – rcdmk

答えて

3

アーキテクチャで許可されている場合は、連続した長方形の範囲を持つ隠しシートを使用し、名前をその部分に設定し、これらの名前を他のすべてのシートに使用することも考えられます。

0

私は値を変更したいすべてのセルを含む長方形の範囲オブジェクトを定義します。その範囲のvalueプロパティから長方形のobject[,]配列を取得します。新しい値を配列に書き込み、変更された配列を使用して範囲の値を設定します。

+0

ええ、私はこれを試したかったのですが、細胞の範囲は巨大になりました。そして、これに干渉する恐れのあるあらゆる種類のチャートや数式があります。私はまだそれを試みるかもしれません。ありがとう。 – bunggo

+1

@bunggoその場合、私はユージン・リャブセフの提案は有望と思われると思います。 – phoog

0

途中にある連続したセル、たとえば列Xに値を書き込んで、これらの更新されたセルを参照するターゲットセルに数式を入れることができます。したがって、セルA1は、数式 "= X1"、セルB23 "= X2"などとなります。

関連する問題