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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

openpyxl

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

314閲覧

セル結合の解除をする際に指定セルをワイルドカードにしたい

kitaru

総合スコア21

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

openpyxl

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/06/13 08:13

前提・実現したいこと

セル結合の解除をする際に指定セルをワイルドカードにしたいです。
例えば、下記のようなコードがあるのですが
終わりのセルとして指定している「Z1」は扱うファイルのデータ量によって変わるため
変数にして、どんなファイルでも対応できるようにしたいです。

アドバイスやヒント頂けますと幸いです。
どうぞよろしくお願いいたします。

#excelファイルとシートを取得 book = openpyxl.load_workbook('/content/drive/MyDrive/file.xlsx') sheet = book['sheet'] #項目名を調整 sheet.unmerge_cells('B1:Z1')

使っているツールのバージョンなど補足情報

Google Colaboratory

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

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

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

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

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

FiroProchainezo

2022/06/13 08:19

例に出てくるZ1ですが、実際はどのような条件なのでしょうか? 最後の行とか、最後の列とか、何らかの決まった条件を定義できそうでしょうか?
kitaru

2022/06/14 03:53

ご質問ありがとうございます。 結合解除したいのは必ず1行目になります。列でいいますと、データが最後まで入っている列が条件になります。
FiroProchainezo

2022/06/14 04:39

最終行ということなら、以下の様な感じで最終行/列を取得できるので、これで調整してみてはいかがでしょうか? wb = openpyxl.load_workbook('path/to/excelfile.xlsx') ws = wb['sheetname'] maxRow = ws.max_row + 1 maxCol = ws.max_column + 1 書式設定だけされていたりして空白のセルも含めて最終行/列が出てくるため、空白だけならマイナスするなどの処理が別途必要とは思います。
kitaru

2022/06/14 08:26

ありがとうございます。 ヒントを頂いて条件を再度考えていたら、下記で実行できました。 max = sheet.max_column alphabet = get_column_letter(max) sheet.unmerge_cells('B1:{}1'.format(alphabet))
FiroProchainezo

2022/06/14 08:37

解決して良かったです。 alphabet = get_column_letter(max) sheet.unmerge_cells('B1:{}1'.format(alphabet)) この部分はf-stringを使っても良いかもしれません。 sheet.unmerge_cells(f'B1:{alphabet}1') とか sheet.unmerge_cells(f'B1:{get_column_letter(max)}1') など
kitaru

2022/06/14 08:56

ありがとうございます!
guest

回答1

0

自己解決

max = sheet.max_column
alphabet = get_column_letter(max)
sheet.unmerge_cells('B1:{}1'.format(alphabet))

投稿2022/06/14 08:26

kitaru

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問