Board logo

標題: [發問] if函數(陣列形式)如何一次判別多個條件? [打印本頁]

作者: Bodhidharma    時間: 2013-1-6 22:14     標題: if函數(陣列形式)如何一次判別多個條件?

我正在試圖以公式來處理我們公司的會計帳,目前遇到一個問題:

總分類帳測試這個工作表的項目如下:
A欄    B欄   
日期  科目

目前這個工作表,我寫了以下這個公式,是要用在下表中的B欄
科目:購置費
A欄    B欄    C欄    D欄    E欄
月       日      科目   明細   金額

這個工作表中的B2會輸入希望的月份,目的是要列出所有的「某個月的某個科目」的日期
{=IFERROR(DAY(INDEX(總分類帳測試!A:A,SMALL(IF(IFERROR(MONTH(總分類帳測試!$A$1:$A$9999),"")=$B$2,IF(總分類帳測試!$B$1:$B$9999="購置費",ROW(日記帳!$A$1:$A$9999),""),""),ROW(A1)))),"")}
運作起來都沒有問題
現在發生的問題是:因為我需要在excel 2003使用這個文件,但是excel 2003沒有iferror這個公式,因此需要改寫成if(iserror(),"",...)的型式,但是這樣改的話會變得太多層,excel無法接受
因此我希望將月份正確:IFERROR(MONTH(總分類帳測試!$A$1:$A$9999),"")=$B$2;以及科目正確:總分類帳測試!$B$1:$B$9999="購置費" 這兩件事情放到同一層裡面,希望將原本的
IF(IFERROR(MONTH(總分類帳測試!$A$1:$A$9999),"")=$B$2,IF(總分類帳測試!$B$1:$B$9999="購置費",ROW(日記帳!$A$1:$A$9999),""),"")
變為
IF(AND(IFERROR(MONTH(總分類帳測試!$A$1:$A$9999),"")=$B$2, 總分類帳測試!$B$1:$B$9999="購置費"),ROW(日記帳!$A$1:$A$9999),""),這樣就可以減少一層
然後再把IFERROR改成if(iserror(),"",...),層數剛剛好夠用

但是我在使用這個改變的函數的時候,資料就會跑掉,不知道是怎麼回事,想請大家幫我看一下,謝謝
作者: freeffly    時間: 2013-1-14 11:31

回復 1# Bodhidharma


    論壇的高手都會希望問問題時附上檔案
   如果檔案有不可告人秘密
   就把公司名稱拿掉
   相關人名部門拿掉
   至少附上一點點例子
   這樣他們會比較容易幫忙
作者: 小華    時間: 2013-1-14 19:33

判斷多條件的話試試看用"SUMPRODUCT"這個函數
作者: Hsieh    時間: 2013-1-14 23:00

回復 1# Bodhidharma

如圖
I2陣列公式
=IF(ROW(A1)>SUMPRODUCT(($A$2:$A$8=$G$2)*($C$2:$C$8=$H$2)),"",INDIRECT("B"&SMALL(IF(($A$2:$A$8=$G$2)*($C$2:$C$8=$H$2),ROW($2:$8),""),ROW(A1))))
  [attach]13931[/attach]
作者: Bodhidharma    時間: 2013-2-25 14:25

回復 4# Hsieh

    啊,原來用if((符合條系件A)*(符合條件B),......)即可,非常感謝!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)