2016-10-08 7 views
2

私のC#アプリケーションでは、WorkSheet.UsedRangeを使用してワークシート内のデータの範囲を探しています。Excelセルが範囲に属しているかどうかをチェックする方法とその範囲を基準にしたアドレス

特定のセルC13がUsedRangeに属しているかどうかを確認する必要があります。それが属している場合は、行番号&は範囲内の列番号となります。

例では、RangeがRow 10とCol Bから始まる場合、C13はRange内のRow 4とCol 2です。

私はここに同様の質問を見つけました: Checking if selected cell is in specific range

が与えられた解決策が交差する方法です。

しかし、C#では、Excel.ApplicationClassのIntersectメソッドは非常に多くのパラメータを使用し、多くのパラメータにMissing.Valueを渡すことができますが、Intersectメソッド以外の方法があるかどうかを知りたいと思います。

ありがとうございました。

+0

こんにちはAllSolutions ...セルC13がusedRangeにあるかどうかを確認したい場合は、getRangeを使用する前にC13セルをチェックするだけで済みませんか?データが含まれている場合は、usedRangeに格納されます。限り、usedRangeに関連して、その細胞の場所を取得する...それは挑戦することができます。 C13のデータは一意ですか?もしそうなら、usedRangeを介してその場所を見つけますか? – JohnG

答えて

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; 
    } 
関連する問題