gpt4 book ai didi

德尔福-Excel : Define a non-contiguous range

转载 作者:行者123 更新时间:2023-12-03 14:52:13 24 4
gpt4 key购买 nike

我拥有的是一张包含数据的工作表,我想定义一个不连续的范围,例如,可用于创建图表。

只要范围是矩形,定义范围就很容易。

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 |
+-------+------+------+------+------+

例如,如果我希望为时间、Col1 和 Col2 创建图表,那么范围就是 ASheet.Range['A1', 'C10']。如果我想为 Time、Col1、Col3 和 Col4 创建图表,则无法以这种方式创建范围(因为不应包含 Col2)。

在 VBA 中,只需 .Range("A1:B10,D1:E10") 即可创建所需的范围。不幸的是,在 Delphi (Excel2010) 中似乎没有定义范围的等效方法,事实上它似乎只支持格式为 .Range[topLeft, BottomRight] 的范围。

我的问题是:如何在 Delphi 中定义非连续范围?

最佳答案

经过几个小时的谷歌搜索,我偶然发现了关键部分:Application.Union ,在阅读 documentation for Range object 时第n次了。

解决方案是使用 Excel 对象方法 Union 将两个连续范围进行并集,以定义一个新范围,该范围可以是不连续的。

示例:

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

Range := ExcelApp.Union(Range1, Range2);

关于德尔福-Excel : Define a non-contiguous range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com