看板 Python 關於我們 聯絡資訊
請問使用xlwings 如果我有一個excel表如下 date 1101 1102 1103 1104 1107 2021/8/27 47.45 44.2 22.05 20.8 2021/8/30 47.6 44.7 22.05 20.75 2021/8/31 48.45 44.9 22.35 20.85 2021/9/1 48.4 45.65 22.55 21.15 2021/9/2 47.9 44.85 22.4 21 我想要判斷這整個範圍('A1:F6')只要其中一格是None 就print('yes') 其他就print('no') 要怎麼打呢? 我用if 判斷其中一格是None都沒問題 但是儲存格改成範圍後 都只會回傳no 請問要怎麼打呢? 謝謝 代碼如下 if sheet.range((2,6),(2,6)).value or sheet.range((2,7),(2,7)).value is None: print('Yes') else: print('No') ===>都只會回傳NO -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.70.141 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1662291524.A.8AB.html
surimodo: if (sheet.range((2,6),(2,6)).value is None) or (she 09/04 19:59
surimodo: et.range((2,7),(2,7)).value is None): 09/04 19:59
surimodo: ==== 09/04 20:43
Pettitte1: 可以了 我在想想怎麼變成i 謝謝 09/04 21:05
Pettitte1: 是不是不能直接用(sheet.range((2,2),(i,j)).value is 09/04 21:22
Pettitte1: None): 這樣 要用While? 09/04 21:23
surimodo: 不能 我想到的是用領個for迴圈偵測 09/04 21:49
surimodo: 兩個迴圈偵測 https://paste.ee/p/Kk0cU 09/04 21:51
謝謝回答 不過會跳出TypeError: 'float' object is not iterable 我是寫成 # for i in range(6,15): # i1 = i - 1 # i2 = i - 2 # i3 = i - 3 # i4 = i - 4 # if (sma5_sheet.cells[i,2].value is None) or (sma5_sheet.cells[i1,2].value is None) or ((sma5_sheet.cells[i2,2].value is None)) or (sma5_sheet.cells[i3,2].value is None) or (sma5_sheet.cells[i4,2].value is None): # print('Yes') # else: # print('No') 每一格都判斷一次 這樣是有用的 但是就變成很長一串 如果要變成60的話要弄到i60 請問有沒有更快的寫法呢? 謝謝 ※ 編輯: Pettitte1 (59.115.70.141 臺灣), 09/04/2022 22:07:31
surimodo: 但這方法沒到很好 應該能用function包裝跑幾比快 09/04 21:52
surimodo: 而且有一些問題 09/04 21:52
surimodo: 對 這就是我說的問題 因為你的測資有很多可能 09/04 22:15
surimodo: 要把程式兩個為圈改成一個迴圈 09/04 22:16
surimodo: 如果範圍是('A1:F6') 理論上正常 09/04 22:19
surimodo: 但你丟了其他 可能是A1:A6 之類就會跳ERROR 09/04 22:20
lycantrope: 有any可以用吧 09/04 23:05
lycantrope: https://pastebin.com/gSXrg1Kf 09/05 08:45
Pettitte1: any可以用 不過all比較適合我 謝謝囉 09/05 16:34
lycantrope: all is not None與any is None等價,你開心就好... 09/05 16:45