我在Google Spreadsheet中有一个带有标签和值的简单列表。下面,我在写标签时希望在其中获取值。
例如,如果我在一个单元格中写入D
,我希望下一个单元格显示4
,该值对应于D
。
这当然可以用IF
内IF
内IF
内的B8
内重复的=IF(A8=A1;B1; IF(A8=A2;B2; IF(A8=A3;B3; IF(A8=A4;B4; IF(A8=A5;B5;0)))))
来完成,如下所示:
IF
这只是逐行检查:如果写入的值与第1行的标签匹配,则显示该值。如果不是,则在第二行执行新的IF
命令。等等
对于许多行来说,这是非常乏味的。 是否可以在Google Spreadsheets中对此进行简化?例如,我可以通过执行A1:A5
或类似的方式以某种方式在一个=IF(A8=A1:A5;B1:B5;0)
语句中收集列中的所有单元格吗?类似于:
class HumanProxyModel(QtCore.QSortFilterProxyModel):
# ...
@property
def filters(self):
if not hasattr(self, "_filters"):
self._filters = []
return self._filters
@filters.setter
def filters(self, filters):
self._filters = filters
self.invalidateFilter()
def filterAcceptsRow(self, sourceRow, sourceParent):
for i, text in self.filters:
if 0 <= i < self.columnCount():
ix = self.sourceModel().index(sourceRow, i, sourceParent)
data = ix.data()
if text not in data:
return False
return True
# ...
class winMain(QtWidgets.QMainWindow):
# ...
def handleFilterActivated(self):
header = self.treeView.header()
filters = []
for i in range(header.count()):
text = header.filterText(i)
if text:
filters.append((i, text))
proxy = self.treeView.model()
proxy.filters = filters