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

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

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

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

Q&A

解決済

2回答

2538閲覧

PythonでEXCELの列を別へのエクセルへ貼り付けたい

fideo

総合スコア55

Python

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

0グッド

0クリップ

投稿2021/10/04 07:47

編集2021/10/04 07:59

Python3 と openpyxl のライブラリを使って、Excelの列をコピーして別のエクセルへ貼り付けています。
下記の方法で行うと元のエクセルのデータが列が増えた分
新規のエクセルへ貼り付けます。
ただ結果のようにすべてのデータがコピペされます。
実現内容のようにフラグだけの列をコピして別のエクセルに貼り付けをどのようにすればよろしいでしょうか。

①Excelデータ

No駅2フラグ
1東京品川処理済み
2原宿原宿処理済み
3日暮里秋葉原
4 東京原宿
5池袋  @@@

②Excelデータ

No駅2
1東京品川
2原宿処理済み
3日暮里秋葉原
4 東京原宿
5 @@@

**実現内容
****>①のEXCELフラグの列をコピーして②のEXCELへ貼り付ける

No駅2フラグ
1東京品川処理済み
2原宿処理済み
3日暮里秋葉原
4 東京原宿
5 @@@

(現在の結果)
>①のEXCELフラグの列をコピーして②のEXCELへ貼り付けることできますが、
駅の原宿や池袋の列も張り付けられています。
エクセル1から全ての行が貼り付けらています。
エクセルのフラグだけコピーしたいです。

No駅2フラグ
1東京品川処理済み
2原宿原宿処理済み
3日暮里秋葉原
4 東京原宿
5池袋  @@@

コード

import openpyxl from datetime import datetime as dt, date, timedelta # 該当ファイルのあるディレクトリに異動 # os.chdir('C:\Users\ユーザー名\Documents\Qiita用サンプル') file_time= dt.now().strftime("%Y%m%d") filename_xlsx="EXCEL1.xlsx" file_completion = "EXCEL2.xlsx" #EXCEL1.xlsxデータのワークブックとワークシートを読み込み wb1 = openpyxl.load_workbook(filename_xlsx) ws1 = wb1['Sheet1'] #EXCEL2データのワークブックとワークシートの読み込み wb2 = openpyxl.load_workbook(file_completion) ws2 = wb2['Sheet1'] def copy_paste1(): for i in range(2, ws1.max_row + 1): #フラグのE列をコピー flag = ws1.cell(row = i, column = 5).value ws1.cell(row = i, column = 4, value = flag) i += 1 wb1.save(filename = file_completion) copy_paste1()

よろしくお願い致します。

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

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

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

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

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

etherbeg

2021/10/04 09:31

①のExcelデータと②のExcelデータの違い、またなぜ(現在の結果)の結果では良くないのかがわかりません。
guest

回答2

0

ベストアンサー

ws2を一度も使っていないことと、wb2をws2を定義するためにしか使っていないことが原因です。

もう一度、ソースコードをよく読みましょう。

投稿2021/10/04 09:30

編集2021/10/04 09:30
ppaul

総合スコア24670

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

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

fideo

2021/10/05 00:33

アドバスありがとうございます。wb2を定義しましたらできました。
guest

0

下記の様にws1からws2を変更しましたら実現したい内容できました。
ws1で全て指定していたので、エクセル1から全ての行が貼り付ける原因でした。

def copy_paste1(): for i in range(2, ws1.max_row + 1): #フラグのE列をコピー flag = ws1.cell(row = i, column = 5).value ws2.cell(row = i, column = 4, value = flag) i += 1 wb2.save(filename = file_completion) copy_paste1()

投稿2021/10/05 00:32

fideo

総合スコア55

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問