2013-06-13 36 views
7

Điều tôi có là trang tính có dữ liệu và tôi muốn xác định phạm vi không tiếp giáp có thể được sử dụng để làm ví dụ, tạo biểu đồ.Delphi - Excel: Xác định phạm vi không tiếp giáp

Miễn là phạm vi hình chữ nhật, nó khá dễ dàng xác định phạm vi.

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

Điều này tạo ra một loạt hình chữ nhật với góc phía trên bên trái tại A1 và góc dưới bên phải trong B10. Vấn đề là khi dữ liệu không được xác định để nó có thể được chọn với một hình chữ nhật duy nhất.

Ví dụ chúng ta có dữ liệu này:

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

Nếu tôi ví dụ muốn tạo ra một biểu đồ cho Time, col1 và col2 sau đó phạm vi chỉ đơn giản là ASheet.Range['A1', 'C10']. Nếu tôi muốn tạo biểu đồ cho Thời gian, Col1, Col3 và Col4 thì không thể tạo phạm vi theo cách này (vì không nên bao gồm Col2).

Trong VBA, bạn có thể tạo phạm vi mong muốn chỉ bằng .Range("A1:B10,D1:E10"). Thật không may có vẻ không phải là một cách tương đương để xác định một phạm vi trong Delphi (Excel2010), trên thực tế nó dường như chỉ hỗ trợ phạm vi với định dạng .Range[topLeft, bottomRight].

Câu hỏi của tôi là: Làm cách nào để xác định phạm vi không tiếp giáp trong Delphi?

Trả lời

9

Sau giờ và giờ googling tôi tình cờ gặp phần khóa: Application.Union, khi đọc qua số documentation for Range object lần thứ n.

Giải pháp là sử dụng phương pháp đối tượng Excel Union để tạo liên kết hai dải liền kề để xác định phạm vi mới, có thể không tiếp giáp.

Ví dụ:

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

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

+1; giải pháp tốt. Tôi có thể liên quan đến sự thất vọng tìm kiếm (: –

+0

Liên kết đến các phiên bản Excel khác của cùng một chức năng: [Excel 2013 Application.Union] (http://msdn.microsoft.com/en-us/library/office/ff834621 (v = office.15) .aspx); [Excel 2010 Application.Union] (http://msdn.microsoft.com/en-us/library/office/ff834621 (v = office.14) .aspx); [Ứng dụng Excel 2007 .Union] (http://msdn.microsoft.com/en-us/library/office/bb178176 (v = office.12) .aspx); [Excel 2003 Application.Union] (http://msdn.microsoft. com/vi-us/thư viện/văn phòng/aa213609 (v = office.11) .aspx); –

Các vấn đề liên quan