如何检查Excel单元格是否属于某个范围,以及它的相对于Range的地址

时间:2016-10-08 04:18:06

标签: c# excel office-interop

在我的C#应用​​程序中,我使用WorkSheet.UsedRange查找工作表中的数据范围。

我需要检查特定单元格C13是否属于UsedRange;如果它属于什么,它的行数&范围内的列号。

例如,如果范围从第10行和第B列开始,则C13是范围内的第4行和第2列。

我在这里发现了类似的问题: Checking if selected cell is in specific range

给出的解决方案是Intersect方法。

但在C#中,Excel.ApplicationClass的Intersect方法需要大量参数,虽然我可以将Missing.Value传递给这么多参数,但我想知道除了使用Intersect方法之外是否还有其他方法。 / p>

感谢。

1 个答案:

答案 0 :(得分:0)

这可以吗?

    private static string GetRelativeAddress(Range cell, Range range)
    {
        int startRow = range.Row;
        int startColumn = range.Column;
        int endRow = range.Row + range.Rows.Count - 1;
        int endColumn = range.Column + range.Columns.Count - 1;

        if (cell.Row >= startRow && cell.Row <= endRow &&
            cell.Column >= startColumn && cell.Column <= endColumn)
        {
            return $"R{cell.Row - startRow + 1}C{cell.Column - startColumn + 1}";
        }
        return String.Empty;
    }