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

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

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

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

Q&A

1回答

918閲覧

リストの値をExcelに反映していく

so_men

総合スコア4

Python

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

0グッド

0クリップ

投稿2021/05/26 02:17

編集2021/05/26 05:19

5つに分割されたものが640個あるリストの、各5つに分割された値を1280シートあるExcelにシート1からA2,B2,C2,D2,E2、A3,B3,C3,D3,E3...A120,B120,C120,D120,E120のように120個入れて次のシートに121~240入れてを1280回繰り替えして各シートに120個のリストデータがある状態にしたい。

■2021_data.xlsx 
イメージ説明
⇩"2021_data.xlsx"の2行目から1行ごと1セルに分解してリスト化
イメージ説明
■反映イメージ
イメージ説明

#格納先エクセルワークブックを読み込む wb1 = openpyxl.load_workbook("1280シート.xlsx") ws = wb1.active #格納データのエクセルを読み込む wb2 = openpyxl.load_workbook("2021_data.xlsx") sheet = wb2["1;q1_1_1~q2_120_1"] for row in sheet.iter_rows(min_row=2): # 行からセルを1個ずつ取得し、処理をする for cell in row: #リストを文字型に変換して分割 if ',' in str(cell.value) : l = str(cell.value) op = l.split(',') for k in range(0,1280): ws = wb1.worksheets[k] s1 = 'B' t = 2 B =s1 + str(t) s2 = 'C' C = s2 + str(t) s3 = 'D' D = s3 + str(t) s4 = 'E' E = s4 + str(t) s5 = 'F' F = s5 + str(t) ws[B]= op[0] ws[C]= op[1] ws[D]= op[2] ws[E]= op[3] ws[F]= op[4] t =+1

↑汚くてすみませんが上記でやってみたのですがリスト1以降のものが反映されません。

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

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

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

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

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

ppaul

2021/05/26 13:52

2021_data.xlsxのシート数は1個ですか。 2021_data.xlsxの"1;q1_1_1~q2_120_1"シートの行数と列数は、それぞれ何ですか。
so_men

2021/05/26 14:08

コメントありがとうございます! 2021_data.xlsxのシート数は2シートです。 "1;q1_1_1~q2_120_1"シートは641行と241列になります。
guest

回答1

0

ws = wb1.worksheets[k]

この行があると120個あるワークシートに分けて書かれそうですが、要らないのでは。

あとはforループの中でopをどうにか更新しないといけませんが、データ構造がわからないと具体的なやり方はわかりません。

投稿2021/05/26 03:58

hayataka2049

総合スコア30935

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

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

so_men

2021/05/26 04:58

コメントありがとうございます!わかりずらくてすみません、、。内容修正しましたので宜しければ確認していただければと思います、、。 ws = wb1.worksheets[k]は1280シートにそれぞれ入れる意味で入れておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問