我使用 Libreoffice。(如果 Excel 或 GoogleSpreadsheets 是获得解决方案的唯一方法,我愿意切换。但首选平台是 LibreOffice,我正在寻找此软件上的解决方案)。
这是我想要实现的目标,我有一个这样的电子表格:
|Date |Available? |Length |
|2/8 9:00 |no |10
|26/8 9:00 |yes |5
|28/8 9:00 |no |2
|29/8 8:00 |yes |5.5
|30/8 9:00 |yes |6
|31/8 9:00 |no |3
现在我想提取“可用”列中为 YES 的所有日期。在这种情况下,不会出现不同的月份,因此只有日期是相关的。我希望在电子表格的其他部分得到以下结果:
26, 29, 30
更复杂的是,如果我想计算长度>5和可用的是真的吗?在上面的例子中,这将是
3
这可能吗?我用 VLOOKUP 乱七八糟地画了画,但不知道从哪里开始。我猜 Excel 的工作原理相同或类似。
我希望这个功能能够正常工作,而不需要用户手动过滤任何内容。这个想法是只需复制/粘贴数据,然后通过文件另一张表中的公式获取结果,然后在那里创建发票。
答案1
在 excel 中...&基于这个好的 index() + match()参考。
这部分的解决方案:
“如果我想计算长度> 5 且可用为真的天数?> 3”
如果长度 >5 ,那么您应该得到 2..而不是 3..如果长度 >=5 ,那么您只会得到 3。
假设您的样本数据在 A1:C7 中,答案是:
=COUNTIFS(B:B,"yes",C:C,">5")
您将得到 2。
对于这一部分:
“想要提取“可用”列中有“是”的所有日期”
假设您的“2/8 9:00”数据位于 A2,“31/8 9:00”位于 A7,所有数据 Id A 列在 Excel 中格式化为日期/时间格式,将其放在 D2 中:
=IFERROR(IF(ROWS($A$2:$A2)>1,INDEX(OFFSET($A$2:$A$7,MATCH(D1,$A$2:$A$7,0),0),MATCH("yes",OFFSET($B$2:$B$7,MATCH(D1,$A$2:$A$7,0),0),0)),INDEX($A$2:$A$7,MATCH("yes",$B$2:$B$7,0))),"")
在 E2 中:
=IFERROR(DAY(D2),"")
您将在那里得到“ 26, 29, 30 ”。