[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『印刷範囲の自動拡張』(トール)
エクセルのシートに、
A4サイズの表(ひな形)を作成しており、
それが縦に10ページ分程あります。
現状、
表に書き込むデータ量によって、
ページ数が、3ページになったり6ページになってりするため、
印刷時にページ指定で、データが書き込まれてるページまで指定
して印刷しています。
これを省略出来ないかと考え、
ネットで探し、名前の定義に関数を入れる方法を試しているのですが、
上手くいきません。
出来れば関数で行いたいので、
どなたかご教授頂ければと思います。
今の関数
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$N),14)
これに、
表で入力される場合、必ず入力するセル場所を判定材料として
組込めたらと思ったんですが、方法が良く分かりません。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
>COUNTA(Sheet1!$A:$N)
の部分はCOUNTA(Sheet1!$A:$A)でいいんじゃないですか? 式の意味は理解してます? A列は必ず入力する列なんですか?
>上手くいきません。
とは具体的にどう上手くないのですか? (コナミ) 2020/09/17(木) 13:46
>の部分はCOUNTA(Sheet1!$A:$A)でいいんじゃないですか?
仰る通りです。式を理解しようと色々試してる名残です。
実際は、COUNTA(Sheet1!$A:$A)になってます。
理解の点では、ネット説明文を見ながら意味を調べてる、試してる感じです。
>A列は必ず入力する列なんですか?
A列は必ず入力する列ではないです。
これなんですが、違ってるかもしれませんが、
この式は、連続するデータがある列では有効ですが、
決まった枠がある表(空欄は挟む表)では、ダメなんじゃないかと思ってます。
空欄がNGだとすると、どの列も必ずデータが入力される列はないです。
ですので、列指定では無く、場所指定では?と思って質問しました。
(トール) 2020/09/17(木) 14:11
COUNTAの部分は、印刷範囲の高さを指定しています。 ですからA列が全て埋まっていればCOUNTAで返ってきた高さ分を印刷範囲にすればいいということです。 空欄があるというなら、その分を足せばいいのではないですか? 数が決まってないなら範囲が少し大きくなるのを我慢してある程度の数を足しておくとか。
ちなみにOFFSET関数は、基点(第一引数)から縦にずれる数と横にずれる数を指定し、(第三・第四引数) そこから高さと幅を指定(第四・第五引数)する関数です。 (コナミ) 2020/09/17(木) 14:18
こんにちは
少しちまちました方法になりますが作業列を使用してこんな感じはどうでしょうか
名前の定義に入れる関数は =OFFSET(Sheet1!$A$1,0,0,Sheet1!,参照セル,14)
作業列として改ページの最後の行に =IF(COUNTIF($A1:$A40,">""")>0,ROW(),"") 入力してA1セルからA40セルの中で記入があれば この関数を記入した行数を表示しなさい(関数を書いたところにその行の行番号が入る
それを全ての改ページ前に記入しておいてMAX関数で読み取ったセルを名前の定義の参照セルに 代入すれば行番号(高さ)を変更できると思います(記入判定の範囲は変更ください)
作業列は印刷範囲外に記入してくださいね(15列目以降) (なるへそ) 2020/09/17(木) 14:34
コナミさん、ご説明ありがとうございます。
>空欄があるというなら、その分を足せばいいのではないですか?
数が決まってないなら範囲が少し大きくなるのを我慢してある程度の数を足しておくとか。
すみません、理解力が無くちょっと意味が分からないです。
表の範囲と表の数は決まってますが、データが入る表の数は決まってません。
データが入っている表だけ印刷したいので、全ての表を範囲にすると、
どのみにページ指定印刷になるのでは?
なるへそさん、コメントありがとうございます。
こちらも、私には難しいですが、
各表毎に、記入判定の関数を準備して、名前の定義に入れる関数で
判定集計で印刷範囲を決めるって事でしょうか?
かなり現実的に出来そうですが、私にはレベル高いですわ。
(トール) 2020/09/17(木) 16:06
えっと…例えばA50までデータがあるけど実際は空白セルがあるからデータは45しか入ってない としますよね? その場合、COUNTAでは45しか返らないので予めCOUNTA()+5とかにしておくとかです。 空白セルが5とは限らないなら10くらいにしておけば下に余白が出るかも知れませんが 大体は入るかな?という感じです。
>全ての表を範囲にすると
とは一言も書いてません。 (コナミ) 2020/09/17(木) 16:16
もしくは、印刷範囲外の列にフラグ列を1列作って1行目から印刷範囲の行まで 全てのセルに1を入れておき、COUNTAでその列を数えるとか。 (コナミ) 2020/09/17(木) 16:31
トールさんへ 概ねそういうことですが10ページなら10か所書くだけでOKです(コピペするだけ) あとはMAXで印刷したいページの最終行を表示してそれを名前の定義の式にセル参照する
ひな形に記載しておいてひな形として使用するので最初に書いておけば いちいち変更する必要はありません
名前の定義に入れる関数の基本は最初ので合っています。COUNT関数のところが MAXで拾い出したセルを参照することで印刷したい行までを印刷範囲にするということです
流れとしては 記入されている行を判定しページの最後の行の印刷範囲外に書いてもらう COUNTIF($A1:$A40,">""")>0で記載場所(何か書いてるか空白か)を探し、ROW()で行の番号をもってきます ()の中身がないのはそのROWが書かれた行番号を持ってくる為です なのでページの一番最後の行に書いてねということです
ページの一番最後の行に記入するのはそこまで印刷範囲にしたいからです
MAXで一番大きな数字を表示させるセルを作っておいてセルの番地を名前の定義の式に代入します M1のセルにMAXの式を書いたのなら参照セルは $M$1 になります MAXの式はN列にROWを使った関数を書いたとしたら =MAX(N:N)でもってこれます(但しMAXの式はN列に書かないでね、上ではM列の1行目に書いた事にしています) (なるへそ) 2020/09/17(木) 16:49
COUNTIFの中の$A1:$A40はA列の1行目から40行目に何か書いてあればそのページに何か書いてあると 判断していますので判断する個所は必要なところに変えてくださいね
コピペで下に持っていくと範囲も自動で変更されるのでページ行数が同じ内容ならそのままコピペだけでOKです (なるへそ) 2020/09/17(木) 16:59
すみません。
余計に混乱してます。
印刷は、表毎に区切って行うので、
2ページ目のデータが1行で残りが余白でも、
データが入っている表(2ページ目)まで行います。
A B C D E F G H I J K L M N 1 2 3 ________________________________________ 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 |_______________________________________| 12 13 14 ________________________________________ 15 | | 16 | | 17 | | 18 | | 19 | | 20 | | 21 | | 22 |_______________________________________| 23 ・ ・ ・ ・ ・ ・
> >全ての表を範囲にすると
とは一言も書いてません。
すみません。確かに書かれておりませんね。
私が誤認しました。
(トール) 2020/09/17(木) 17:01
ちょっと時間が掛かりそうですが、
出来そうな気がしてきたので、
何度も読み返して、試してみます。
(トール) 2020/09/17(木) 17:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.