アプリ版:「スタンプのみでお礼する」機能のリリースについて

excelで空行を詰めて印刷する方法

いつもありがとうございます。
エクセルで空行を詰めて印刷する方法をご教示ください。
具体例としては添付画像のような感じで、
入力されていない(または関数で""(空白)となっている)セルを飛ばして
入力がされているセルの数字だけを抽出して印刷したいです。
抽出する際には、それぞれの項目名(添付画では「項目1」等)も一緒に抽出し
何にたいしていくらなのかがハッキリするようにしたいです。
(たまたま例ではすべて4つですが、1つの場合も13項目全部の場合もあります)
宜しくお願いいたします。

「excelで空行を詰めて印刷する方法」の質問画像

A 回答 (7件)

こんにちは!


方法だけ理解してもらえれば良いかな!って思っています。
↓の画像で説明します。
各項目の金額だと思うのですが、文字列ではなく数値が入力してあるという前提です。

Sheet2のA2セルに
=IF($A$1="","",IF(COUNT(OFFSET(Sheet1!$E$1:$Q$1,MATCH($A$1,Sheet1!$A$2:$A$100,0),,1))<ROW(A1),"",INDEX(Sheet1!$E$1:$Q$1,,SMALL(IF(OFFSET(Sheet1!$E$1:$Q$1,MATCH($A$1,Sheet1!$A$2:$A$100,0),,1)<>"",COLUMN($A$1:$M$1)),ROW(A1)))))

これは配列数式になりますので、この画面からコピー&ペーストする場合は貼り付けただけではエラーになると思います。
貼り付け後、F2キーを押す、または貼り付けたセルをダブルクリック、または数式バー内で一度クリックします。
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。

そして、そしてB2セルは
=IF(A2="","",INDEX(OFFSET(Sheet1!$E$1:$Q$1,MATCH($A$1,Sheet1!$A$2:$A$100,0),,1),,MATCH(A2,Sheet1!$E$1:$Q$1,0)))

(これは配列数式ではありません、コピー&ペーストだけで大丈夫です。)

最後にA2・B2セルを範囲指定し、B2セルのフィルハンドルで下へコピーすると
画像のような感じになります。
これでA1セルに「管理NO」を入力すると項目と数値が表示されると思います。

尚、数式はSheet1の100行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になればよいのですが
的外れならごめんなさいね。m(__)m
「excelで空行を詰めて印刷する方法」の回答画像4
    • good
    • 0
この回答へのお礼

まさしくやりたかったことそのものです!
この拙い文章をちゃんと汲み取っていただけて
とても助かりました。
本当に有難うございました。


>他の方々
いろいろお答えいただき有難うございました。
皆様の回答も参考にさせていただきます。

お礼日時:2010/06/18 11:14

全体のやりたいことは伝わりますが、一気にうまく出来る回答をもらうのはこの質問では余計に時間ロス、難しいと思います。

段階をふんで1つずつ片付ける方が良さそうです。


印刷用のシートを用意して下さい。青相当の内容です。


管理番号、すなわち印刷単位の行を決めるための入力セルを準備して下さい。


データ入力されているセルだけを判断し列挙するのが、ここの本題と思いますから、回答サンプルをもらって実装して下さい。


ここまでできたらようやく印刷したいイメージが揃うのではないでしょうか。


何かボタン押すかして管理番号入れたら印刷までしてくれるというのは段階としては少し後と思います。


VBAの対応が出来るかも教えて下さい。
    • good
    • 0

まさかそうは思ってないでしょうが、関数はセルの値を決めるものです。

印刷を左右できません。
印刷はエクセルがシートの値(と書式適合結果)を渡して、プリンターが(自身のソフトで)印刷するものです。導入プリンタ-で少しは出来ることが変わって来ます。
エクセル関数ではどうにもならない。
このことをよく押さえておくこと。
ただし、エクセルでは
(1)非表示にしたデータは印刷されない。
書式で非表示(ユーザー定義の""など”)になっているものも印刷されない。
(2)フィルタの結果も非表示の一種かと思う。
こういう機能なら利用できる場合があろう。
(3)基本は印刷するデータを好みの配置(セルに規制されるが)に再構成することです。
ーー
一般に空行をつめて印刷するニーズはあろう。しかし、いつも、誰でもそうではない。むしろシートで見えるままを印刷するのが基本的な考えです。
だからエクセルまたはプリンターメーカーのソフトにそういう機能が負ければ、それはかなわないことです。
ーーー
従って別のシートや空きセル範囲に、印刷したいようにデータを作らないとダメです。
フィルタなどの結果として作るでも良い。
ーー
エクセルは抜き出し問題は苦手です。行(列)を、データ実績(空白かどうかで)に従って順次つめて表示する問題は難しい。
Googleで「imogasi方式」で照会すれば、抜き出し問題が沢山出てきます。そのimogasi方式の中では
・該当のものを区別する
・別シートなりに、該当をつめて表示する
の2つのことをやっており、つめて表示するやり方の例を使ってます。
言葉で言えば、該当分の、上から何番目と「表示するとき上から何行目」を結び合わせているのです。
ーーー
でもエクセルVBAというのがあって、使える人には比較的簡単に質問のようなことは出来るのです。
MSもエクセルのメニューをやたらと複雑にするより、込み入ったことはVBAでやりなさい、と考えているように個人的に推測する。
VBAを勉強してください。
    • good
    • 0

図が小さくて詳細がわかりませんが、E1セルから右に項目名が、E2セルから右にその数値が入力されている場合、D30セル以下に数値が入力されている項目名、その右のセルに対応する数値を詰めて表示するなら、以下のような数式になります。



D30セル
=INDEX($1:$1,SMALL(INDEX(($E$2:$Q$2="")*100+COLUMN($E2:$Q2),),ROW(A1)))&""

E30セル
=IF(D30="","",INDEX($2:$2,MATCH(D30,$1:$1,)))

上記の数式は、1つの例として2行目のデータを空白を詰めて表示する数式になっていますが、抽出行を数式で指定することもできます。
    • good
    • 0

エクセルで多少なりとも関数その他のことを


理解している者と思いますので簡単な説明に致します。
使用していない列に =IF(C1<>0,"表示1","")&IF(D1<>0,"表示2","")&IF(E1<>0,"表示3","")&IF(F1<>0,"表示4","")&IF(G1<>0,"表示5","")
と入力して下にコピーする。
この列にオートフィルタを設定する。
印刷範囲を設定する。(オートフィルタ部分を印刷しないため)
オートフィルタを利用して印刷したい部分のみ表示する。
印刷する。
    • good
    • 0

質問者です。

画像が見にくいので補足します。

画像はデータ入力用のシートで、

A 管理No → この番号で印刷出力の命令を出せるように
B 支払先No
C 支払先
D 支払内容
E 項目1
F 項目2
 ・
 ・
 ・
Q 項目13
R 支払予定日

となっています。
青い部分が印刷される部分で別シート(印刷用シート)を作っています。
左上の白い部分が住所と支払先(そのまま送れるように)
中央部上の白は挨拶の定型文が入っています。
中央の真ん中に、管理No1の場合
 支払内容  ○○関連
 項目1・・・
 項目2・・・
 項目5・・・
 項目7・・・
とそれぞれの金額が入ります。
(管理No2の場合は項目1,3,4,8
 管理No3の場合は項目2,6,10,11)

一番下の白は支払予定日が入っています。

以上、宜しくお願いいたします。
    • good
    • 0

>excelで空行を詰めて印刷する方法



空行はその行を非表示にすると印刷されません。

>入力がされているセルの数字だけを抽出して印刷したいです。

この事と前述の事は、違う内容です。いくつかの希望があるようなので箇条書きにして書くと分かりやすかと。このままでは、何がしたいのか不明です。

入力されたセルのみの印刷なら、入力されているセルのみ別のシートにコピーすれば済みます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!