비망록(openpyxl에서 ①다른 북으로부터의 코피페②대조표 참조)

개요



전회 기사에서 제 2 스텝으로 한 「표 1의 대조표를 사용해 각 행에 설정 1/설정 2를 붙인다」가 우선 실장할 수 있었기 때문에 정리해 둔다.
htps : // 이 m / ぇ ぇ l ぇ l 3176 / ms / 7d 981b479c5933bf5f

성과



도 1에 도시 된 원시 데이터 및 대조표로부터도 2의 결과의 자동 생성에 성공

                 그림 1 좌:생데이터 오른쪽:대조표

                     

program
import openpyxl
wb1=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/data3.xlsx')
ws1=wb1.active

#対照表をマスターとして別に用意しておく。マスター側からは数式では無く数値を引っ張りたいので、data_only=trueで開く
wb2=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/table.xlsx',data_only=True)
ws2=wb2.active

for i in range(12):
  for j in range(3):
    copy = ws2.cell(row = i+1, column = j+3).value
    ws1.cell(row = i+1, column =j+10,value=copy)

#別ブックからの参照が上手く行かなかったので対照表を一度コピペ
#rangeはi=0から始まるが、行と列は1から始まるので調整

min_row=2
max_row=ws1.max_row #2行目から最終行まで処理を掛けるので行数取得

ws1["H1"].value="設定1"
ws1["I1"].value="設定2" #見出しは入力した方が早かった

for i in range(min_row, max_row):
  ws1.cell(row=i, column=7).value ="=D{}&E{}".format(i,i)
  #7列目に区分+業務を入力
  ws1.cell(row=i, column=8).value ="=INDEX($J$1:$L$12,match(G{},$J$1:$J$12,0),2)".format(i) 
  ws1.cell(row=i, column=9).value ="=INDEX($J$1:$L$12,match(G{},$J$1:$J$12,0),3)".format(i) 
  #INDEXを使い、参照表と7列目を照会。結果を入力

wb1.save('/content/drive/My Drive/Colab Notebooks/data4.xlsx')

문제점



・그림 2의 G열 J열 K열 L열은 후공정에서 불필요하므로 지우고 싶지만, 참조를 사용하고 있으므로 지울 수 없다.

⇨ 강인한 해결책으로서 data4를 data_only=true로 열고 불필요한 열 이외를 새로운 파일에 복사하는 손은 있지만, 쓸데없는 처리한 생각이 든다.

· 다른 책의 참조 방법을 모른다.

이번은 table.xlsx의 내용을 data4.xlsx에 복사하고, 그 후 INDEX 함수를 사용했지만,
아무래도 생각해도 처음부터 table.xlsx를 참조하는 것이 좋다・・・하지만, 기술 방법을 찾을 수 없어.
다음 과제로 한다.

좋은 웹페이지 즐겨찾기