1日3分で学ぶPythonの 1 〜 11 まで完了してたらできるはず。。
設定
商品名と売り上げ金額が入ったシートから、700,000円以上の売り上げの商品と金額を取り出し、
新しいシートに書き込む。
Excelファイルは、乱数を使用しA列とB列に1,000行づつ作成。
A列の関数は、1列目に「商品名」2列目以降は下記関数で乱数を生成。
=MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)
&MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1) &MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)
&MID(CHAR(RANDBETWEEN(48,57))&CHAR(RANDBETWEEN(65,90))&CHAR(RANDBETWEEN(97,122)),RANDBETWEEN(1,3),1)
B列の関数は、1列目に「金額」2列目以降は下記関数で乱数を生成。
=RANDBETWEEN(1,1000000)
乱数生成後、セルをコピーして1,000行目までペーストしました!!
GoogleDriveからExcelファイルの読み込みに関しては、こちらから
if文に関してはこちらから
while文に関しては、こちらから
主要コードの説明
continue_num = 1
count = 2
branch_point = 700000
while count <= sheet_name.max_row:
amount = sheet_name.cell(row=count,column=2).value
if branch_point > amount:
count += 1
continue_num += 1
continue
product_name = sheet_name.cell(row=count,column=1).value
over_buranch_point = sheet_name.cell(row=count,column=2).value
str_count = str(count - continue_num)
new_sheet["A"+str_count] = product_name
new_sheet["B" +str_count] = over_buranch_point
count += 1
解説
変数
continue_num = 1
count = 2
branch_point = 700000
<continue_num>
if文でcontinueした場合に、「continue_num」= continue した回数を「count」より差し引句ことにより、新しいシートに書き込む際に、セルの空白が出ないようにしている。
<count>
セルの2行目から(1行目はタイトルが入っている為)始まるように設定。
<branch_point>
振り分ける条件の金額設定。
<amount>
セルから取得した金額が代わり代わり入ってくる。
<product_name と over_buranch_point>
if文の条件に当てはまらなかった(branch_pointよりも金額が大きかったもの)「商品名」と「売上額」が入ってくる。
<str_count>
セルの行番号を指定するのに、String型でないとダメみたいなので変換。
while文
while count <= sheet_name.max_row:
sheet_name.max_rowで、シートの最終行を取得。( 今回は1,000行 )
なので、countが1,000以下の間はwhile文の処理が実行される。
amount = sheet_name.cell(row=count,column=2).value
比較する金額(B列の金額)をamountに代入。
if文では、amountが設定した金額より小さかったら実行されます。
amountが基準より大きければ、商品名と金額を変数に代入しています。(product_nameとover_buranch_point)
上記コードより先に作成しておいた、新しいシートに基準を通過してきた商品名と金額を書き込んでいきます。
最後に、countに+1して、while文の先頭に戻ります。
コード全部
## ライブラリのインポート
import openpyxl
## driveにアップロードしたexcelファイルの読み込み
excel_file = openpyxl.load_workbook("/content/drive/My Drive/Colab Notebooks/商品管理.xlsx", data_only=True)
## シートを読み込み
sheet_name = excel_file["売り上げ"]
## シートから取得できるか確認(A列の1行目を取得)
sheet_name.cell(row=1,column=1).value
## シートの長さ(length)を確認(今回は1,000行)
sheet_name.max_row
## 新しいデータを入れるシートを作成(名前を「分岐」とする)
new_sheet = excel_file.create_sheet('分岐')
new_sheet = excel_file['分岐']
## シートが作成されているか確認
excel_file.sheetnames
## 条件にあった物だけを抽出し新しいシートに記述
continue_num = 1
count = 2
branch_point = 700000
print(type(branch_point))
while count < sheet_name.max_row:
amount = sheet_name.cell(row=count,column=2).value
if branch_point > amount:
count += 1
continue_num += 1
continue
product_name = sheet_name.cell(row=count,column=1).value
over_buranch_point = sheet_name.cell(row=count,column=2).value
str_count = str(count - continue_num)
new_sheet["A"+str_count] = product_name
new_sheet["B" +str_count] = over_buranch_point
count += 1
## excelファイルを保存
excel_file.save("/content/drive/My Drive/Colab Notebooks/商品管理.xlsx")
## 条件にあったデータの数(length)を取得
new_sheet.max_row
## 今回は、276行文のデータがヒットしました!