回答編集履歴

3

2023/01/15 07:33

投稿

melian
melian

スコア19825

test CHANGED
@@ -5,6 +5,7 @@
5
5
  from openpyxl.styles import PatternFill, Font
6
6
  from openpyxl.worksheet.cell_range import CellRange
7
7
 
8
+ # Excel formatting rule
8
9
  wb = openpyxl.load_workbook('data.xlsx')
9
10
  ws = wb['データ']
10
11
  max_row, max_col = ws.max_row, ws.max_column
@@ -14,8 +15,7 @@
14
15
  dxf = DifferentialStyle(font=font, fill=fill)
15
16
  for r in range(start_row, ws.max_row+1):
16
17
  rg = CellRange(min_col=start_col, min_row=r, max_col=max_col, max_row=r)
17
- vrg = ':'.join(f'${i}' for i in rg.coord.split(':'))
18
- rule = Rule(type='cellIs', operator='greaterThanOrEqual', formula=[f'=AVERAGE({vrg})'], dxf=dxf)
18
+ rule = Rule(type='cellIs', operator='greaterThanOrEqual', formula=[f'=AVERAGE(${rg})'], dxf=dxf)
19
19
  ws.conditional_formatting.add(str(rg), rule)
20
20
 
21
21
  wb.save('output.xlsx')

2

2023/01/15 07:26

投稿

melian
melian

スコア19825

test CHANGED
@@ -7,12 +7,13 @@
7
7
 
8
8
  wb = openpyxl.load_workbook('data.xlsx')
9
9
  ws = wb['データ']
10
- max_row, max_col, start_row = ws.max_row, ws.max_column, 2
10
+ max_row, max_col = ws.max_row, ws.max_column
11
+ start_row, start_col = 2, 2
11
12
  font = Font(color='000000')
12
13
  fill = PatternFill(bgColor='FF0000', patternType='solid')
13
14
  dxf = DifferentialStyle(font=font, fill=fill)
14
15
  for r in range(start_row, ws.max_row+1):
15
- rg = CellRange(min_col=2, min_row=r, max_col=max_col, max_row=r)
16
+ rg = CellRange(min_col=start_col, min_row=r, max_col=max_col, max_row=r)
16
17
  vrg = ':'.join(f'${i}' for i in rg.coord.split(':'))
17
18
  rule = Rule(type='cellIs', operator='greaterThanOrEqual', formula=[f'=AVERAGE({vrg})'], dxf=dxf)
18
19
  ws.conditional_formatting.add(str(rg), rule)

1

2023/01/15 07:23

投稿

melian
melian

スコア19825

test CHANGED
@@ -4,27 +4,18 @@
4
4
  from openpyxl.styles.differential import DifferentialStyle
5
5
  from openpyxl.styles import PatternFill, Font
6
6
  from openpyxl.worksheet.cell_range import CellRange
7
- import pandas as pd
8
7
 
9
- # Excel spreadsheet
10
- excel_file = 'data.xlsx'
11
-
12
- # rowwise mean values
13
- df = pd.read_excel(excel_file)
14
- mean = df.iloc[:, 1:].mean(axis=1)
15
-
16
- # Excel formatting rule
17
- wb = openpyxl.load_workbook(excel_file)
8
+ wb = openpyxl.load_workbook('data.xlsx')
18
9
  ws = wb['データ']
19
- max_row, max_col = ws.max_row, ws.max_column
10
+ max_row, max_col, start_row = ws.max_row, ws.max_column, 2
20
11
  font = Font(color='000000')
21
12
  fill = PatternFill(bgColor='FF0000', patternType='solid')
22
13
  dxf = DifferentialStyle(font=font, fill=fill)
23
- for r in range(2, ws.max_row+1):
14
+ for r in range(start_row, ws.max_row+1):
24
15
  rg = CellRange(min_col=2, min_row=r, max_col=max_col, max_row=r)
16
+ vrg = ':'.join(f'${i}' for i in rg.coord.split(':'))
25
- rule = Rule(type='cellIs', operator='greaterThanOrEqual', formula=[mean[r-2]], dxf=dxf)
17
+ rule = Rule(type='cellIs', operator='greaterThanOrEqual', formula=[f'=AVERAGE({vrg})'], dxf=dxf)
26
18
  ws.conditional_formatting.add(str(rg), rule)
27
19
 
28
- # save to new file
29
20
  wb.save('output.xlsx')
30
21
  ```