2016-07-13 5 views
0

"見出し"がマージされたセルにあり、その値が "見出し"の下のセルにあるシートを持っています。openpyxlを使用すると、どのように多くのセルが.xlsxにマージされるかを調べることができます

見出しに含まれる細胞の数はいくつ計算できますか? 「見出し」に属する細胞の読み込みを開始する場所と終了する場所を知るためには、これが必要です。

+-----------+-----------+ 
| Heading1 | Heading2 | 
+-----------+-----------+ 
| 1 | 2 | 3 | 3 | 3 | 4 | 
+---+---+---+---+---+---+ 
| 4 | 5 | 6 | 3 | 3 | 3 | 
+---+---+---+---+---+---+ 
+0

ヘッダー行のセルに「スパン」属性がありますか? – martineau

+0

スパン属性の意味が不明です。私は彼らが手動でマージしたと思う。 –

+0

ヘッダーセルが行の複数のセルにまたがることを示す何かがExcelファイルに存在する必要があります。 openpyxlが提供するセルオブジェクトの 'dir()'を出力し、その属性が何であるかを確認します。 – martineau

答えて

-1

Public Function COLUMNSINMERGED(r As Excel.Range) 

If r.MergeCells Then 
    COLUMNSINMERGED=r.MergeArea.Columns.Count 
    Debug.Print r.MergeArea.Address, "Cols : " & r.MergeArea.Columns.Count, "Rows : " & r.MergeArea.Rows.Count 
else 
    COLUMNSINMERGED=r.cells.count  
End If 

End Function 
+0

質問は特にopenpyxlに関するものです。 –

+0

質問は "どのように多くのセルが.xlsxでマージされているかを知ることができます"とExcelタグを持っています。誤解を招くようなビットで、タグ以外のpythonは言及していません。 –

+0

真実、これを反映するために質問を更新します。 –

-1

の下にあなたがExcel Column Number to Text

#calculates the span given a merged cell 
#first checks to see if cell is merged and then calculates the span 
def calculateSpan(sheet, cell): 
    idx = cell.coordinate 
    for range_ in sheet.merged_cell_ranges: 
     merged_cells = list(openpyxl.utils.rows_from_range(range_)) 
     for row in merged_cells: 
      if idx in row: 
       # If this is a merged cell 
       first_col=convertLetterToColumnNum(str(merged_cells[0][0][0])) 
       second_col = convertLetterToColumnNum(str(merged_cells[0][1][0])) 
       span=abs(second_col-first_col)+1 #remove +1 if you want to count from zero 
       return span 

#usage 
print(calculateSpan(mysheet,mysheet['D11'])) 

からconvertLetterToColumnNum機能を得ることができますようにあなたは残りの部分はの修正版で、ExcelでVBAの関数を使用することができますHow do i get value present in a merged cell

関連する問題