作者Pettitte1 (低调奢华有内涵)
看板Python
标题[问题] xlwings判断范围内其中一格的值
时间Sun Sep 4 19:38:40 2022
请问使用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://webptt.com/cn.aspx?n=bbs/Python/M.1662291524.A.8AB.html
1F:→ surimodo: if (sheet.range((2,6),(2,6)).value is None) or (she 09/04 19:59
2F:→ surimodo: et.range((2,7),(2,7)).value is None): 09/04 19:59
3F:→ surimodo: ==== 09/04 20:43
4F:→ Pettitte1: 可以了 我在想想怎麽变成i 谢谢 09/04 21:05
5F:→ Pettitte1: 是不是不能直接用(sheet.range((2,2),(i,j)).value is 09/04 21:22
6F:→ Pettitte1: None): 这样 要用While? 09/04 21:23
7F:→ surimodo: 不能 我想到的是用领个for回圈侦测 09/04 21:49
谢谢回答 不过会跳出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
9F:→ surimodo: 但这方法没到很好 应该能用function包装跑几比快 09/04 21:52
10F:→ surimodo: 而且有一些问题 09/04 21:52
11F:→ surimodo: 对 这就是我说的问题 因为你的测资有很多可能 09/04 22:15
12F:→ surimodo: 要把程式两个为圈改成一个回圈 09/04 22:16
13F:→ surimodo: 如果范围是('A1:F6') 理论上正常 09/04 22:19
14F:→ surimodo: 但你丢了其他 可能是A1:A6 之类就会跳ERROR 09/04 22:20
15F:推 lycantrope: 有any可以用吧 09/04 23:05
17F:→ Pettitte1: any可以用 不过all比较适合我 谢谢罗 09/05 16:34
18F:→ lycantrope: all is not None与any is None等价,你开心就好... 09/05 16:45