2014-06-26 22 views
0

我創建了以下公式以基於用戶月份條目選擇創建日曆。Array轉換日曆日的IF公式返回#N/A在該月的最後一天

{=IF(COLUMN($M$5:$AT$5)-COLUMN($M$5)+1>SUMPRODUCT(0+(WEEKDAY(ROW(INDIRECT($L$6&":"&EOMONTH($L$6,0))),1)<8)),"",TRANSPOSE(SMALL(IF(WEEKDAY(ROW(INDIRECT($L$6&":"&EOMONTH($L$6,0))),1)<8,ROW(INDIRECT($L$6&":"&EOMONTH($L$6,0)))),ROW(INDIRECT("1:"&EOMONTH($L$6,0)-$L$6)))))} 

該公式工作得很好,但是,該月的最後一天返回#N/A。無論用戶輸入什麼月份,最後一天都會返回錯誤。下面是使用十二月(我藏列節省空間)的樣本:

enter image description here

正如你所看到的,每天工作除了最後一個。我認爲這是因爲有31天,所以我用了一個月30天:

enter image description here

相同的結果。這個公式有一些問題,但我不明白爲什麼。

+1

你能用文字解釋你想要做什麼嗎?看起來非常複雜,只需在M6中輸入日期,然後在N6中輸入= M6 + 1並拖動即可。 – sous2817

+0

@ sous2817我正在嘗試創建一個dymanic日曆。如果用戶在L6上輸入月份,則M:AQ將填寫用戶的月份。這是更大的電子表格的一部分 –

回答

2

雖然我會告訴你錯誤發生的原因,但我不能承諾會全面剖析你的公式(順便說一下,我會認爲這會產生#REF!錯誤,而不是#N/?A - 你能澄清)

如果L6的日期是本月結束,那麼這部分(在公式的結尾):

= ROW(INDIRECT( 「1:」 & EOMONTH ($ L $ 6,0) - $ L $ 6))

將解析爲(因爲L6中的條目的結束時間與此處的L6中的值完全相同):

= ROW(INDIRECT( 「1:」 & 0))

它是:

= ROW(INDIRECT( 「1:0」))

,並且由於1:0是不是一個有效的範圍參考,這部分錯誤(儘管#REF!錯誤,這就是爲什麼我問你這個問題)。

Regards

+0

L6中的日期是月初。你是對的,我應該得到一個#REF,但我得到#N/A(見上面的截圖)。 –

+0

那麼你發佈的公式與AQ列相關,哪裏出現錯誤,或哪些屬於M列?如果是後者,恐怕在向您提供解釋方面沒有多大用處。 –

+0

我找出問題所在。它在EOMonth上。我使用的是EOMONTH($ L $ 6,0)而不是EOMONTH($ L $ 6,1),它顯示了月份的最後一天,在單元格中的日期後一個月被引用L6 –

相關問題