2017-09-26 11 views
0

私は実際には自動化を考慮して設計されていない大きなExcelシートを解析するためにC#でコードを記述しようとしています。多くの場合、私は1つの細胞の位置を知っていますが、別の細胞のテキストを数細胞離れて取得する必要がありますが、それらの細胞は複数の正常細胞に融合して広がっている可能性があります。結合されたセルのサイズをセル数で取得するにはどうすればよいですか?マージされたExcelセルのサイズを取得する方法

また、間にあるセルがマージされているときに、特定の数のセルを離れたところに置くことができますか?私はExcel.Range.Offsetを試しましたが、実際のセルをマージしたものではなく、実際のセルを数えているようです(その間に4ワイドのマージされたセルがある場合、オフセット2はそのセルの中央に移動しますその次)。

+0

何か試したことがある場合は、コードを投稿して、それが何をするのか、またそれがどうしていないのかを述べてください。 – Sach

+0

なぜあなたはC#でマージされたセルのサイズを取得する必要があります - なぜ実際のセル距離を取得し、それを使用しないでください? – NetMage

+0

私はあなたが何を意味するか分かりません。私は、すべての細胞がマージされるかもしれないし、マージされないかもしれない、2細胞離れた細胞を見つけることができる必要があります。範囲がマージされたセルの場合、cell.Offset [0,1]を使用すると自動的に次のセルに移動しますが、オフセット[0,2]を使用すると、そのセルに移動しないことがあります。 – tfa2773

答えて

0

あなたがマージされた領域のサイズを決定するために、次のコードを使用することができます。

var activeSheet = this.Application.ActiveSheet as Excel.Worksheet; 
    if (activeSheet != null) 
    { 
     var activeCell = activeSheet.Cells[2, 2]; 
     if (activeCell.MergeCells) 
     { 
      if (activeCell.MergeArea != null) 
      { 
       dynamic mergeAreaValue2 = activeCell.MergeArea.Value2; 
       object[,] vals = mergeAreaValue2 as object[,]; 

       if (vals != null) 
       {        
        int rows = vals.GetLength(0); 
        int cols = vals.GetLength(1); 
       }       
      } 
     } 
    } 

仮定はCells[2,2]がマージされた領域の上隅を残していることです。変数では、行と列は、マージされた領域の行と列の量になります。これは、スキップする行数または列数の質問に対する答えです。

関連する問題