実現したいこと
A列にタイトル、B列に値が入っているエクセルのデータがあります。
B列には700以上の値があります。
B列のデータを必要個数(今回は109個で設定)抽出し、ひとつずつずらして別の列にそれぞれ抽出したいと思っています。
いろいろやり方を考えてみたのですがどれもうまくいかず
エクセルのindex関数を使用してエクセル上でうまくいったのでそれをpythonで自動作業ができないかと考えました。
※他のいい方法がありましたらご教示ください。
発生している問題・エラーメッセージ
現状だとB列の109個の値を718列値を抽出できているのですが
すべて同じ値です。
エクセルでは列を移動する際に「=INDEX($B:$B,ROW()*1+1)」+2,+3と最後に「+」がついて
ひとつずつずれていくのですが、うまく当てはめることができず困っています。
該当のソースコード
python
1import openpyxl as px 2 3wb = px.load_workbook('./xxx/test.xlsx') 4ws = wb['Sheet1'] 5ws2 = wb.create_sheet(title='Sheet2') # 別シート作成 6 7for i in range(109): 8 for j in range(718): 9 ws2.cell(row=2+i, column=1+j).value = f'=INDEX(Sheet1!$B:$B,ROW()*1)' 10 11wb.save('./xxx/test_2.xlsx') 12wb.close()
試したこと
= f'=INDEX($B:$B,ROW()*1+i)'
こちらに+iを入れたところ、エクセルの値はすべて「#NAME」になってしまいました。
>B列のデータを必要個数(今回は109個で設定)抽出し、ひとつずつずらして別の列にそれぞれ抽出したい
ってことなら使う変数はjではないでしょうか。
正直なところ、私の想定通りの挙動であればIndexの数式を入れずともTRANSPOSEでいい気がしますが

すみません、そうだったのです。
先ほど「i」でやってもできなかったので、「j」で思った通りのことができました。
ご指摘ありがとうございました。

回答1件
あなたの回答
tips
プレビュー