0

Excel 相互運用チャートのソース データを複数の行全体に設定するにはどうすればよいですか?

.csv作成された結果を表示するために、プログラムによって作成されたファイルがあります。簡単にするために、これらの結果とチャートが次のように表示されているとしましょう: (これはまさに私が望んでいた方法です)

ここに画像の説明を入力

今私が抱えている問題は、人数が可変であることです。したがって、行データ全体にアクセスする必要があります。

今、私はこれをやっています:

var range = worksheet.get_range("A1","D3");

xlExcel.ActiveChart.SetSourceData(range);

が 3 つしかない場合、これはうまく機能Personsしますが、データの行全体にアクセスする必要があります。

質問を言い換えると、チャートのソース データを複数の行全体に設定するにはどうすればよいですか?


ここを見てみましたが、列ではなく行で機能させることができなかったようです。

4

4 に答える 4

3
var range = worksheet.get_range("A1").CurrentRegion;

xlExcel.ActiveChart.SetSourceData(range);

編集:データ領域のセルが空白にならないと仮定しています。
これをテストするには、
1) セル A1 にカーソルを置きます
2) を押しF5
ます 3) [特別] をクリックします
4) オプションとして [現在の地域] を選択します
5) [OK] をクリック します

これにより、塗りつぶされた A1 の周囲のセルが選択されます。これがあなたが探しているものだと思います。

それを VBA コードに変換すると、CurrentRegionプロパティが指されます。それはうまくいくはずだと思います。

于 2013-03-20T18:48:36.710 に答える
0

オプションRange.EntireRow をチェックしてください。3行全体を含む単一の範囲にそれを拡張する方法について100%ではありませんが、達成するのはそれほど難しいことではありません。

もう1つできることは、スキャンして必要な実際の最大列インデックスを取得し(これは、名前にギャップがないことが保証されていることを前提としています)、範囲を宣言するときにそのインデックスを使用することです。

コードを追加

int c = 2;//column b
while(true)
{
    if (String.IsNullOrEmpty(worksheet.GetRange(1,c).Value2))
    {
        c--;
        break;
    }
    c++;
}
于 2013-03-20T18:45:18.937 に答える
0

ここではすぐに使用できますが、データを転置してみませんか? 名前、身長、体重の 3 つの列。これを通常の範囲からテーブルに変換します。

グラフの SERIES 式を含む任意の式がテーブルの列を参照する場合、テーブルの長さに関係なく、常にその列を参照します。別の人 (別の行) を追加すると、追加された人を含むデータがグラフに表示されます。数人を削除すると、チャートは最後に空白を残さずに調整されます。

これは、私のチュートリアル、リストまたはテーブルを使用した簡単な動的チャートで説明されています。

于 2013-04-02T12:28:23.077 に答える
0

A から D までの列のうち、空のセルがないと確信している列を選びます。

その列の最初の空のものを見つけるためにいくつかのループを実行すると、最後の次の後に1つになります。

Range Cell = SHeet.Range["A1"]; //or another column you're sure there's no empty data

int LineOffset = 0;

 while (Cell.Offset[LineOffset, 0].Value != "")  //maybe you should cast the left side to string, not sure.
{
 LineOffset++;
}

int LastLine = LineOffset - 1;

次に、 Range[Sheet.Cells[1,1], Sheet.Cells[LastLine, 4]] を取得できます

于 2013-03-20T18:48:22.453 に答える