1 回答

TA貢獻1804條經驗 獲得超8個贊
在Excel中,您可以擁有像這樣的復雜范圍字符串:“D6:F11,I6:I9,J14,N10,P5:Q9”,因此首先您需要用“,”分割,然后對于每個包含“:”的子字符串,您需要獲取單元格的子范圍。
Hear 是一種獲取范圍字符串、解析它并返回單元格字符串列表的方法:
private static List<string> GetCellStrings(string cellRange)
{
// Cell string to return from this method.
List<string> cells = new List<string>();
// Remove whitespace.
cellRange = cellRange.Replace(" ", "").Trim();
// First split by ',' to get subranges
string[] subranges = cellRange.Split(',');
// Iterate over subranges
for (int i = 0; i < subranges.Length; i++)
{
string range = subranges[i];
// If the subrange contains a ':', calculate all range cells
if (range.Contains(':'))
{
string[] rangeBounds = range.Split(':');
char lowerBoundLetter = rangeBounds[0][0];
char upperBoundLetter = rangeBounds[1][0];
int lowerBoundNumber = int.Parse(rangeBounds[0].Substring(1));
int upperBoundNumber = int.Parse(rangeBounds[1].Substring(1));
for (char columnLetter = lowerBoundLetter; columnLetter <= upperBoundLetter; columnLetter++)
{
for (int rowNumber = lowerBoundNumber; rowNumber <= upperBoundNumber; rowNumber++)
{
string cell = columnLetter.ToString() + rowNumber.ToString();
cells.Add(cell);
}
}
}
// If the subrange does not contain a ':', it's a single cell, add it to the list of cells
else
{
cells.Add(range);
}
}
return cells;
}
注意:此代碼僅適用于 26 列 - A 到 Z。
例子:
string cellRange = "D6:F11,I6:I9,J14,N10,P5:Q9";
List<string> cells = GetCellStrings(cellRange);
for (int i = 0; i < cells.Count; i++)
{
Console.WriteLine(cells[i]);
}
輸出:
D6
D7
D8
D9
D10
D11
E6
E7
E8
E9
E10
E11
F6
F7
F8
F9
F10
F11
I6
I7
I8
I9
J14
N10
P5
P6
P7
P8
P9
Q5
Q6
Q7
Q8
Q9
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報