質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

1回答

776閲覧

pythonで行ごとの平均以上を色付けしたいです。

umemaru

総合スコア2

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2023/01/15 03:39

前提

現在python 勉強中です。
エクセルの表で行ごとに平均以上を色付けることをしたいです。

実現したいこと

・行ごとに平均を判定して行以上を導き、平均以上の場合色を付けたい
イメージ説明
A列は基準値のため対象外としたい

以下のコードですと形があってないみたいな感じではじかれます

該当のソースコード

python

1import openpyxl 2from openpyxl.stylws import PatternFill 3import pandas 4 5wb = op.load_workbook(file_name = "data.xlsx") 6ws = wb["データ"] 7Max_row = ws.max_row 8Max_column = ws.max_column 9 10df = pd.read_excel("data.xlsx", sheet_name = "データ") 11for row in range(2,Max_row + 1): 12 mean = df.iloc[[row-2],1:].mean(axis=1) 13 val = ws.cell(row = row,column = col).value 14 if val >= mean: 15 ws.cell(row = row,column =col).fill = PatternFill(PatternType = "solid",fgColor = "FF0000".bgColor = "FF0000")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2023/01/15 04:00

> 以下のコードですと形があってないみたいな感じではじかれます どういう状況でしょうか?「形があってない」「はじかれます」の意味が分かりません。
guest

回答1

0

python

1import openpyxl 2from openpyxl.formatting.rule import Rule 3from openpyxl.styles.differential import DifferentialStyle 4from openpyxl.styles import PatternFill, Font 5from openpyxl.worksheet.cell_range import CellRange 6 7# Excel formatting rule 8wb = openpyxl.load_workbook('data.xlsx') 9ws = wb['データ'] 10max_row, max_col = ws.max_row, ws.max_column 11start_row, start_col = 2, 2 12font = Font(color='000000') 13fill = PatternFill(bgColor='FF0000', patternType='solid') 14dxf = DifferentialStyle(font=font, fill=fill) 15for r in range(start_row, ws.max_row+1): 16 rg = CellRange(min_col=start_col, min_row=r, max_col=max_col, max_row=r) 17 rule = Rule(type='cellIs', operator='greaterThanOrEqual', formula=[f'=AVERAGE(${rg})'], dxf=dxf) 18 ws.conditional_formatting.add(str(rg), rule) 19 20wb.save('output.xlsx')

投稿2023/01/15 06:12

編集2023/01/15 07:33
melian

総合スコア19618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問