简化excel单元列表以创建Range

Gay*_*ake 5 c# algorithm excel vsto

我想从动态生成的单元格引用列表中创建Excel.Range对象.

Excel.Range outputRange = sheet.get_Range(strCellRange, Type.Missing);
Run Code Online (Sandbox Code Playgroud)

由于strCellRange可以变得非常大,因此它提供了com异常.因此,我想简化它以使用联合范围符号.

例如

string strCellRange = "F2,G2,H2,I2,J2,K2,L2,F7,G7,H7,I7,J7,K7,L7,F12,G12,H12,I12,J12,K12,L12,F17,G17,H17,I17,J17,K17,L17,F22,G22,H22,I22,J22,K22,L22,F27,G27,H27,I27,J27,K27,L27";
Run Code Online (Sandbox Code Playgroud)

string strCellRange = "F2:L2,F7:L7,F12:L12,F17:L17,F22:L22,F27:L27";
Run Code Online (Sandbox Code Playgroud)
  1. 是否有任何Excel方法来创建具有大量单元格引用的Range对象?
  2. 是否有已知的算法来实现上述简化(矩阵算法)?

bre*_*tdj 4

加延,

VBA可以强制你的直接字符串到一个范围

Sub Test()
Dim rng1 As Range
Dim strCellRange As String
strCellRange = "F2,G2,H2,I2,J2,K2,L2,F7,G7,H7,I7,J7,K7,L7,F12,G12,H12,I12,J12,K12,L12,F17,G17,H17,I17,J17,K17,L17,F22,G22,H22,I22,J22,K22,L22,F27,G27,H27,I27,J27,K27,L27"
Set rng1 = Range(strCellRange)
Set rng1 = Union(rng1, rng1)
Debug.Print rng1.Address
End Sub
Run Code Online (Sandbox Code Playgroud)