我在名稱管理器中設定了動態列印範圍,以忽略具有不從另一個工作表傳回任何值的公式的行。在大多數情況下,一切正常,除了跳過最後 8 行實際資料。這是我正在使用的 OFFSET 公式。
=OFFSET('採購日誌'!$A$1,0,0,COUNT(IF('採購日誌'!$B$8:$B$10003<>0,'採購日誌'!$B$8:$B$10003)) ,24)
我不明白為什麼我會丟失最後 8 行,除非它與我從第 8 行開始範圍有關?我將範圍更改為從 B1 開始,現在它正在跳過最後 7 行。我迷路了。任何幫助是極大的讚賞!
[這是該文件的連結][1]。它的工作方式是將新資料貼到「匯出資料」標籤中,然後透過公式將其拉入其他兩個選項卡中。這是一個帶有公式的空白單元格,我試圖在動態列印中忽略它們。
答案1
提供連結後新增:
是的,八行是問題所在,因為前七行不是 COUNT() 編輯的,而第八行(B8 本身)有文本,因此不會添加到計數中。但正如前面提到的,您無法透過更改第二個範圍來修復它。您只需將 COUNT() 的結果加 8 即可。就像下面最後所示的公式一樣,除了加8而不是加7。
(附註:將兩個範圍更改為B1(相對於B8)將缺失行更改為7 的原因是B6 中的值是數字,並以這種方式進行計數,因此太少的8 行變成了太少的7 行。
答案2
正如harrymc
暗示的那樣,要找到這個問題的答案確實需要更多信息,甚至屏幕截圖也可能很方便。
但是,您似乎正在測試一個範圍 (B8:B10003),而不是 B1 的範圍:無論該區域沒有任何動態材料。事實上,它的內容甚至可能會導致計算失敗。到目前為止,一切都很好。
然而,遺失的行數表示您確實打算列印那些未經測試的行中的任何內容,因為動態範圍似乎從 A1 開始,而不是 A8 或其他什麼。 B1:B7 中的 8 個缺失與 7 個缺失不是匹配的位置,但在您的其他相關問題中,您聲明您正在做其他回答者所做的事情,但它不起作用你,而其中的其他文字表明你幾乎只是做了他所做的事情。因此,我假設這裡可能存在同樣的不精確性,並且繼續前進。
看起來動態資料從第 8 行開始,而 B 列是建立正確列印範圍的方便且準確的來源。並且您可能想要列印該點上方七行中的部分或全部作為報告的開始,也可能作為標題(但可能不打印,或者涉及那麼多行,您會丟失一千或兩行。 )
人們假設該範圍內的數據要么是數字,要么COUNT()
是不需要的,所以很好,您不需要COUNTA()
。不同之處在於後者也會計算文字單元格。因此,第一個潛在問題是:也許,在 10,000 行中,其中大約有 8 個值實際上是文字。 「如何」在這裡只重要於解決問題的根源(因為這顯然不是預期的),甚至不是考慮這是否可能的先兆。因此,設定兩個公式,一個使用該範圍內的每個函數,然後看看它們的結果是否相同。如果沒有,則該列中有一些紅頭文字條目。這些沒有被計算在內,因此範圍最終比需要結束的位置短了很多。坦白說,無論你認為這種情況多麼不可能,它絕對是最有可能的麻煩根源。而且,這可能是問題的一部分,而其餘的則是其他問題。做測試。
繼續,測試準確的正確範圍當然至關重要,因此值得稱讚。但是,這不一定正是您想要產生實際列印區域的範圍。不是靠它自己。因此,假設您確實希望從 A1 開始列印,那麼計算出的總數中的七行將用於第 1-7 行,而不是實際資料。換句話說,假設計數為 2,433。如所寫,這將是範圍 A1:X2433,但由於它意味著第 8 行到第 10003 行中有 2,433 行,因此您確實需要那麼多行和更多行。因此,如果計算找到 2,433 個項目,您確實需要範圍 A1:X2440,而不是 A1:X2433。僅此而已,就可以從報告中減少七行。
這在你的公式中如何應用?您需要將這七行加入函數的輸出中COUNT()
。就在右括號之後:
=OFFSET('Procurement Log'!$A$1,0,0,COUNT(IF('Procurement Log'!$B$8:$B$10003<>0,'Procurement Log'!$B$8:$B$10003)) +7, 24)
(就在「24」之前)。
我敢打賭,這可以讓你得到丟失的七行。也許在這 9,996 個 B 列單元格中的某處存在一個文字條目來獲取另一個。
如果第1-7 行有內容,則在第一次使用時將引用從B8 更改為B1 會將行添加到計數中(因為測試中的使用將它們添加到計數中,而僅對它們進行計數則不會),並且您說它是失去它們,而不是獲得它們,所以這不是問題。在第二次使用它時更改它可能會(需要查看確切的真實電子表格頁面)丟失它們,因為前七個可能不是數字。 Excel 將元素與元素進行匹配,而不是將地址與地址進行匹配。這意味著,如果範圍的前七個元素是非數字,則它們的 FALSE 將與測試範圍的數字條目(從 B8 開始,可能是數字條目本身)進行匹配。因此,感興趣範圍的前七個元素將被排除在計數之外,使得動態列印範圍比正確的少七行。
保持範圍匹配,並在其父函數 ( COUNT()
) 的結果中添加 7 即可實現您的目標,而不會弄亂比較。這樣做,我敢打賭它開始看起來非常正確。不要弄亂COUNT()
函數中的任何內容,只需在其後添加所需的七個即可。
最後,我要向沒有註意到的人提一下,您的情況可能是公式之一在連續的區塊中返回值,直到它們不返回值的某個點,並且在剩下的過程中永遠不會再這樣做。因此,第 23、24、2438、2499 和 2900 行中沒有數據。因此,可以這麼說,您不是用它來“狩獵和啄食”行,而是將其作為一個塊來打印,從第一行向下直到第一個空行,而不關心之後的情況。如果他們在整個過程中被發現,這種方法就根本不起作用。
這也意味著返回的資料之間的一些空白行並不是問題的原因,並且使用類似的公式FILTER()
將它們全部打包到一個連續的組中將不會像它們已經做的那樣做任何事情。 (如果這是完全錯誤的,並且它們之間被發現有空行,那麼,這就是你的困難的根源,是時候採取FILTER()
行動了!)