背景:在安排播客時,我們每月發布四集。如果一個月(星期六)有5個錄制日,我們錄制,但不發布那一周,這樣我們就可以建立一個緩沖區。
此函式的目的是計算 RecordingDates 列(命名范圍)旁邊的星期六數,如果:
- 當前行是列標題下方的第一個資料行或
- 月份變化
- 年內或
- 一年過去了
我有三個自定義函式來簡化:
ISFIRSTROW - 檢查上面的值是否是 TEXT。如果是,則回傳 TRUE。
=ISTEXT(Index(range,ROW()-1))LASTROWUP - 回傳關注范圍內上一行的值
=Index(range,ROW()-1)NEXTROWDOWN - 回傳關注范圍內下一行的值
=Index(range,ROW() 1)
總而言之,這是一個公式:
=IF(OR(ISFIRSTROW(RecordingDates),OR(MONTH(NEXTROWDOWN(RecordingDates))>MONTH(RecordingDates),AND(MONTH(LASTROWUP(RecordingDates))=12,MONTH(RecordingDates)=1))),1,LASTROWUP(WeekCount) 1)
這些中的每一個都單獨作業。如果我從第 2 行下方開始填充,它們也會一起作業。
我遇到的問題是,如果我從第 2 行開始,我會收到以下錯誤:
Error
Function MONTH parameter 1 expects number values.
But 'Recording Date (ten)' is a text and cannot be coerced to a number.
ISFIRSTROW 函式在第 2 行中單獨運行時回傳 TRUE。因此,據我了解,IF 中的 OR 函式應決議為 TRUE,IF 應將單元格值設定為 1 并完成。我已經嘗試了一堆公式的配置,并且束手無策。我覺得我在 70 年代的產品廣告中尖叫著“必須有更好的方法!”
我知道 MONTH 函式需要一個數字輸入。我不明白為什么公式的那部分正在評估。或者,如果我想讓函式從頂部開始,為什么我總是要考慮如何處理標題。
電子表格的快照
uj5u.com熱心網友回復:
如果您在第 2 行,那么ROW()-1將從第 1 行獲取資料,并且您在第 1 行有一個標題(文本字串),因此這等于錯誤,因為日期從第 2 行開始
嘗試:
=IFERROR(IF(OR(ISFIRSTROW(RecordingDates),
OR(MONTH(NEXTROWDOWN(RecordingDates))>MONTH(RecordingDates),
AND(MONTH(LASTROWUP(RecordingDates))=12,MONTH(RecordingDates)=1))),1,LASTROWUP(WeekCount) 1))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/513120.html
