7

私が持っているのはデータを含むシートであり、例としてチャートを作成するために使用できる非連続範囲を定義したいと考えています。

範囲が長方形である限り、範囲を定義するのは非常に簡単です。

range := ASheet.Range['A1', 'B10'];

これにより、左上隅が でA1、右下隅が の長方形の範囲が作成されB10ます。問題は、単一の四角形で選択できるようにデータが定義されていない場合です。

例として、次のデータがあります。

+-------+------+------+------+------+
| Time  | Col1 | Col2 | Col3 | Col4 |
+-------+------+------+------+------+
| 01:20 |    5 |    1 |  101 |   51 |
| 01:21 |    6 |    1 |  101 |   51 |
| 01:22 |    5 |    0 |  101 |   51 |
| 01:23 |    5 |    0 |  101 |   51 |
| 01:24 |    5 |    0 |  101 |   55 |
| 01:25 |    5 |    1 |  101 |   55 |
| 01:26 |    6 |    1 |  101 |   15 |
| 01:27 |    7 |    2 |  101 |   15 |
| 01:28 |    7 |    2 |  101 |   15 |
+-------+------+------+------+------+

たとえば、Time、Col1、Col2のグラフを作成したい場合、範囲は単純ASheet.Range['A1', 'C10']です。Time、Col1、Col3、および Col4のチャートを作成したい場合、この方法で範囲を作成することはできません (Col2 を含める必要がないため)。

VBA では、単純に目的の範囲を作成することができます.Range("A1:B10,D1:E10")。残念ながら、Delphi (Excel2010) で範囲を定義する同等の方法はないようです。実際には、 format の範囲のみをサポートしているようです.Range[topLeft, bottomRight]

私の質問は、Delphi で連続していない範囲を定義するにはどうすればよいですか?

4

1 に答える 1

10

何時間にもわたるグーグル検索の後、Range オブジェクトのドキュメントをn 回目Application.Unionに読んだときに、重要な部分に出くわしました。

解決策は、Excel オブジェクト メソッドUnionを使用して 2 つの連続した範囲の結合を作成し、連続していなくてもよい新しい範囲を定義することです。

例:

ExcelApp := TExcelApplication.Create(..);
...
Range1 := Sheet.Range['A1', 'B10'];
Range2 := Sheet.Range['D1', 'E10'];

Range  := ExcelApp.Union(Range1, Range2);
于 2013-06-13T20:48:19.767 に答える