Re: [算表] 用 Excel 自制記帳表的問題
--原文恕刪--
我也試了好一陣子,終於找到你需要的算式
以下是一個簡單的範例,而為了方便起見,所有東西都在同一頁
如果你要在不同頁計算,請自行修改變數
A B C D E F G H I
1 日期 類型 科目 支付方式 金額 3/1/10 3/2/10
2 3/1/10 食 外食 現金 20 外食
3 3/2/10 食 外食 現金 40 房租
4 3/2/10 住 房租 現金 3000
而在H2,你需要鍵入的算式為:
=arrayformula(sum(if($A$2:$A=H$1,1,0)*if($C$2:$C=$G2,1,0)*$E$2:$E))
------------------- ------------------- -------
X Y Z
X 是查看 A2 到 A 欄最後一筆是否為 H2 所要求的日期,為真則輸出 1 ,反之為 0
Y C2 C H2 科目 1 0
Z 是輸出所有的金額
這個東西有點像真值表,當 X, Y 同時成立時,相乘才會輸出 1 ,再乘以該項目金額
而使用 arrayformula 函數時,它會列出所有 array 的結果
但我們在裡面使用了 sum 函數,所以只會輸出總和
1*1* 20=20
以 H2 為例,它會輸出 0*1* 40= 0
0*0*3000= 0
而我們又使用了 sum 函數,所以會在 H2 得其總和為 20+0+0=20
然後再拉公式到其他欄位,就可自動算出你要的結果了
另外 $A$2:$A, $C$2:$C, $E$2:$E 的 array 長度需相同
否則 arrayformula 無法計算
而且所有欄列須加上 $ 符號,才能鎖住範圍,複製到其他欄位時才不會跟著變動
例如拉公式到 H3 的時候, $A$2:$A 保持不變,而不會變成 $A$3:$A
(我發現使用$A:$A會出問題,其因為 A1 是文字格式,非日期,程式因而無法判別)
同理,在 X 裡的 H$1,我們只要鎖住在第一列,欄位可以變動
拉公式到 H3 時,參照的日期位置仍在 H1,而不會跑到 H2
拉公式到 I2 時,參照的日期位置會自動跑到 I1
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.147.182.18
推
03/18 15:37, , 1F
03/18 15:37, 1F
※ 編輯: hulapig 來自: 24.147.182.18 (03/18 21:26)
→
11/16 11:43, , 2F
11/16 11:43, 2F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 4 篇):