作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我拥有的是一张包含数据的工作表,我想定义一个不连续的范围,例如,可用于创建图表。
只要范围是矩形,定义范围就很容易。
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/
我是一名优秀的程序员,十分优秀!