I collect all cells in the merged_cells first:
def collect_merge_dict(sheet):
merge_dict = {}
merge_ranges = sheet.merged_cells.ranges
for index, merged_range in enumerate(merge_ranges):
for col in range(merged_range.min_col, merged_range.max_col + 1):
for row in range(merged_range.min_row, merged_range.max_row + 1):
coord = (row, col)
merge_dict[coord] = index
return merge_dict
Then we can uses d6stringer's content_checker:
def content_checker(sheet):
for row in sheet:
for cell in row:
if cell.value == 'Human Readable':
return cell
And look up the cell:
def main():
wb = load_workbook("/Book2.xlsx")
sheet = wb['Sheet1']
merge_dict = collect_merge_dict(sheet)
cell = content_checker(sheet)
index = merge_dict.get((cell.row, cell.column), -1)
if index > -1:
cell_range = list(sheet.merged_cells.ranges)[index]
print(cell_range)