teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2020/12/26 00:50

投稿

退会済みユーザー
answer CHANGED
@@ -82,7 +82,7 @@
82
82
  # 勘定名から勘定コードを逆引きする。
83
83
  code = code_index.get(wsws.cell(row, 1).value)
84
84
  # codesに含まれる勘定コードがある行にデータを書き込む
85
- if code in codes:
85
+ if data.get(mise) and data[mise].get(code) and code in codes: # 修正
86
86
  write_values(wsws, row, 2, data[mise][code])
87
87
  row += 1
88
88
 
@@ -92,4 +92,6 @@
92
92
 
93
93
 
94
94
  wbwb.save("結果.xlsx")
95
- ```
95
+ ```
96
+
97
+ ※上のコードでは、Book1にデータがなく、かつ結果.xlsxに既にデータがある場合、「結果.xlsx」の当該データは上書き消去されません

2

修正

2020/12/26 00:50

投稿

退会済みユーザー
answer CHANGED
@@ -27,8 +27,8 @@
27
27
  c_mise = 3
28
28
 
29
29
 
30
- last_col = 0
30
+ last_col = 1 # 修正
31
- for cell in ws["B:B"]:
31
+ for cell in ws["2:2"]: # 修正
32
32
  if cell.value is not None:
33
33
  last_col += 1
34
34
 

1

コメント修正

2020/12/11 11:34

投稿

退会済みユーザー
answer CHANGED
@@ -1,7 +1,8 @@
1
- そもそも元のコードは力業で無理やり操作しようとしているため、正常な動作せようとする
1
+ そもそも元のコードは力業で無理やり操作しようとしているため、元のコードを生かしたまま希望の動作を行わように修正しよう思う
2
2
  かなり難しいと思いました。
3
3
 
4
4
  下記のようにデータを構造的に読み取り、構造的に書き込む必要があると思います。
5
+ (ただし下記コードも、月の並びについては考慮していない(Book1と結果.xlsxで月の並びが同じであることが前提となっている)ため汎用性に乏しいスクリプトである点は否めません)
5
6
 
6
7
  ```
7
8
  import openpyxl as py