• 2

請教動態範圍的列印公式問題

最近有完成一個表格
起初沒有注意到這個問題
直到後來接手的人反應
說列印的時候會有少幾列沒有出來

這是目前我設定的列印範圍公式
Print_Area
=INDIRECT("A1:J"&COUNTA(INDIRECT("B:B")))

請教動態範圍的列印公式問題

由EXCEL2010→公式→名稱管理員→新增定義名稱去建立此公式

用途做列印有資料的部份,若該欄沒有資料就不列印
預設資料格共有150欄
資料範圍從A1:J1、A1:A158

前面有做過列印標題
Print_Titles
='T-1'!$8:$8

A9:A158都是自動流水號的公式



遇到的問題如下

當資料共有52筆時,列印出來只到45筆就後面沒了

請教動態範圍的列印公式問題


返回活頁薄(名稱設定為T-1),上面的虛線也只到45筆,但資料有52筆是存在的

請教動態範圍的列印公式問題


請問這個問題要怎麼寫比較好呢?
為什麼資料會判斷到45筆就結束?

有試著把B:B改為C、D、E、F、G、H、I、J等等
但是判定頂多到第50筆,還是會缺沒列印出來?

謝謝
2016-02-17 12:38 發佈
看你的表格,我建議改用A欄判斷
A1~A8,如果是空白,CountA會算錯喔
您的公式還要+7才行

有興趣的話請參考我不久前的自動抓資料範圍教學

還有提醒一下,往下(横的)是列,往右(直的)是欄
countA()內,indirect可以不用

snare wrote:
看你的表格,我建議...(恕刪)


感謝您的提醒^^" 列、欄我常常搞錯

Print_Area
=INDIRECT("A1:J"&COUNTA(INDIRECT("B:B")))
改為
Print_Area
=INDIRECT("A8:I"&COUNTA("B:B"))
這樣嗎?

因為前面是介面都有固定格式




把INDIRECT拿掉後
變成只會判斷一欄(右)
A8以上都有列印
A8以下資料都變成不列印了

有試著將B改為A
但是因為A列都有流水號的公式
會判斷B列有沒有輸入日期資料顯示流水號
=IF(B9="","",ROW()-8)

所以改成A的話
列印範圍就直接判定A1:A158都是有資料的
(A9:A158都有套這個流水號公式)



hairyhead wrote:
改為
Print_Area
=INDIRECT("A8:I"&COUNTA("B:B"))
這樣嗎?


兩個紅色的雙引號要去掉!
My Interior Knowledge is Extraordinaire
hairyhead wrote:
但是因為A列都有流水號的公式...(恕刪)


再次看了您新貼的表格

有公式的空白儲存格、有跨欄的合併儲存格用counta

counta()算出來的,要根據表格內容做修正

hairyhead wrote:
Print_Area
=INDIRECT("A8:I"&COUNTA("B:B"))
這樣嗎?
...(恕刪)


不是

您先在空白的地方
counta(c:c)+3
counta(b:b)+7
counta(a:a)-4

自己試看看結果是多少

Mystique Hsiao wrote:
兩個紅色的雙引號要...(恕刪)


感謝指正



snare wrote:
再次看了您新貼的表格...(恕刪)


剛剛在空白格裡測試得出結果
=counta(c:c)+3 =>60
=counta(b:b)+7 =>60
=counta(a:a)-4 =>154


然後重新建立在
公式→名稱管理員→新增定義名稱 Print_Area


=INDIRECT("A1:I"&COUNTA(B:B)+7)





=INDIRECT("A1:I"&COUNTA(C:C)+3)





=INDIRECT("A1:I"&COUNTA(A:A)-4)





以上三個結果還是列印結果有問題呢?
在空白格測試
BB+7 = 60
CC+3 = 60
這2個結果跑是沒有問題的
是不是我哪裡操作或理解錯誤了嗎?
hairyhead wrote:
BB+7 = 60
CC+3 = 60
這2個結果跑是沒有問題的...(恕刪)


虛缐範圍是否正確?

方便的話請上傳T-1表格(含vba),我幫您看看
(如有敏感資料請以其它字串、數字代替)


snare wrote:
虛缐範圍是否正確?...(恕刪)


它的虛線範圍是把A1:A158全部框住了
或者只是框住公式寫的範圍
例如INDIRECT("A1:I"&COUNTA(B:B)+7)
虛線就框到A1:I1~A8:I8的範圍

剛剛用私息方式發檔案過去了

謝謝
hairyhead wrote:
例如INDIRECT("A1:I"&COUNTA(B:B)+7)
虛線就框到A1:I1~A8:I8的範圍

剛剛用私息方式發檔案過去了
...(恕刪)


大概看一下,公式結果是對的,範圍也是對的
在公式不變,只增加、修改資料的情況下
發現counta()會出現2種結果

有時候是COUNTA(B:B)=1 =>出現 a1:I8 這個範圍
有時候是COUNTA(B:B)=52 =>這時列印結果是正常的

主要問題在合併儲存格+公式,影響到 counta()的判斷
(A1:I1合併儲存格=A1)

所以這個表格的公式是對的,但也是錯的

只能說這個函數不適合這個表格,有空再幫您改改


(補充 2/18 22:05),您試看看

a9公式(其它往下拉)
=IF(B9="","",TEXT(ROW()-8,"0"))

Print_area公式
=INDIRECT("a1:i" & COUNTIF('T-1'!$A$8:$A$158,"*?")+7)
snare wrote:
大概看一下,公式結...(恕刪)


感謝~ 剛剛測試一下已經沒有問題了
後來再新增資料下去
也可以正常框到有資料的範圍

所以合併儲存格+公式會影響判定對吧

按照大大提供的公式加個人邏輯判斷 (我的邏輯很差 )

流水號的公式轉換文字涵數
然後再將Print_area的公式
指定範圍去判斷A8(含)以下資料
(之前流水號的公式會影響EXCEL的邏輯對吧)

所以
除了A列的流水號公式要套TEXT公式外
如果…
未來假如有新增欄位做加減乘除之類的公式
(例如新增J9、K9開始)
也必需要將此列通通套上TEXT
來給Print_area做判斷沒錯吧


謝謝 S大的幫忙
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?