我用的是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
現在我想提取“可用”列中為“是”的所有日期。在這種情況下不會出現不同的月份,因此只有日期是相關的。我想要在電子表格的其他部分得到的結果是
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」。