• 締切済み

Excel 入力のある行だけ印刷したい

こんにちは、Excelの関数で教えてください。 いま注文書を作成しています。A1からE10の 範囲でタイトル行含み10行作成し、A~Eには それぞれ型番、商品名、単価、数量、合計金額が 入っているとしてください。つまり商品の種類は 9種類です。 ここで、たとえば2行目と6行目のみ注文がある 場合、2行目と6行目だけ数量の欄に入力されます。 すると、印刷時に2行目と6行目だけ印刷されるよう 制限をかけたいのですが、どのような関数を使えば できるでしょうか? メンテナンス等を考慮し、できればマクロを使わず 関数だけで実現したいのですが・・・。 よろしくお願いします。

みんなの回答

  • kamejiro
  • ベストアンサー率28% (136/479)
回答No.7

#1です。#4、#5、#6の方はかなり工夫をされた回答で大変参考になると思います。また、#6の方の「…VBAで自動化しないと、関数では自動化省力化しないので前途多難なように思います。」とおっしゃるのはもっともだと思います。 関数の中に関数を入れる等の多様化をするほど、誤りがあったときに、誤りを探すのに苦労します。(これは私だけの経験ですが) #1の回答に対する補足での「フィルタをかけてから印刷するといった2段階の手順を自動でする」といったことをお望みであれば、やはり一つのマクロにしてしまう方が、メンテナンス等を考慮された方法だと思います。(私だけの考えかもしれませんが…。)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

A2:B8に下記きデータがあるとする。 注文品名がA列、注文したのはB列に数字のある行で、注文数はその数とする。C列はワーク列です A列  B列   C列 a 0 b 23 1 c 1 d 1 e 34 2 f 2 g 2 3 C2セルに、=COUNTA($B$1:B2)と入れて、下方向に式を複写する。 結果は上記のとおり。注文した品の行で1だけカウントアップしてます。 ここが味噌です。 普通は抜き出し先はSHeet2などですが、説明を簡単にするため、すぐ横に注文品と注文数を抜き出します。 F2セルに=OFFSET($A$1,MATCH(ROW()-1,$C$1:$C$100,0)-1,0) F3以下に式を複写する。 G3に=OFFSET($A$1,MATCH(ROW()-1,$C$1:$C$100,0)-1,1)と入れて下方向に 式を複写します。F3を横にG3に複写して最後の引数を0->1に変えればよい。 さて上記の理屈がわかったとして、問題はF3:Gxの範囲において、注文数を超える下の行にはエラー表示が出るが ISERRORなどで判別して、出ないようにしてください。 注文請け書(印刷するシート)は別シートでしょうから、F、G列をSheet2などへ持っていくとき式が見かけ上、変わります。Sheet1!$C$3:$c$100などのように参照しますので、この点注意してください。 もう1つ注文書が多数ある場合、VBAで自動化しないと、関数では自動化省力化しないので前途多難なように思います。

回答No.5

#3訂正です。 質問文を読み直してみると、商品は固定のようですね? つまり、商品名があると思われるA列をカウントしてしまうとまずいですね。 失礼しました。 私が先ほど記載しました =OFFSET($A$1,0,0,COUNTA($A:$A),5) という数式の $A:$Aという部分、数量があるD列にするべきでした。 =OFFSET($A$1,0,0,COUNTA($D:$D),5) さらに、一つのブックに何枚もシートがあり、同じ注文書を作成していて、同じように印刷したい場合は =OFFSET(!$A$1,0,0,COUNTA(!$D:$D),5) としてください。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 注文書があるシートをSheet1 とさせていただきます。そして、ここでは、印刷シートを、Sheet2 にします。 配列数式を使った例: 別のシートに、   A    B   C    D    E 1: 型番 品名 単価 数量 合計金額 A2:~ =IF(COUNT(Sheet1!$D$2:$D$10)>=ROW(A1),INDEX(Sheet1!$A$1:$E$10,SMALL(IF(Sheet1!$D$2:$D$10>0,ROW($D$2:$D$10),""),ROW(A1)),COLUMN(A1)),"") という式を置いたら、配列数式ですから、一旦入力したら、F2を押して、『ShiftとCtrlを押しながらEnterキー』を押します。 後は、フィルハンドルで、式をコピーしてしまいます。 配列数式を使わない方法: (ここの掲示板では、配列数式を使うと、文句をつける人がいるようですから(^^;) 同じく別シートを使います。 補助列を使って、 例: G2 ~G10 まで =IF(Sheet1!D2>0,ROW(),"") フィルハンドルコピー H2~H10 まで =IF(COUNT($G$2:$G$10)>=ROW(A1),SMALL($G$2:$G$10,ROW(A1)),"") これで、ここで、出てきた行数を、 A2~ =IF($H2<>"",INDEX(Sheet1!$A$1:$E$10,$H2,COLUMN(A1)),"") これで、集約できます。

回答No.3

エクセル2000で検証してみたので、大丈夫だと思いますが・・。 まず、挿入~名前~定義 と選択。 名前の定義を作成するウインドウが開きます。 名前は「Print_Area」です。 参照範囲には =OFFSET($A$1,0,0,COUNTA($A:$A),5)  と入力してOKボタン これで、注文が2~5行目なら、A1からE5を印刷範囲として印刷し、注文が2~10行になったら、A1からE10を印刷範囲として印刷できるはずです。 注意点が2つあります。 1、「Print_Area」という名前は、この通りこのままでお使いください。もちろん「」は抜いて。 2、参照範囲に使った関数は、たとえば2~6行目に注文があった場合、A1~A6全て埋めて(空欄ではない状態)おかないと、参照が狂います。 上記関数は、A1を含めてA列に値があるセルの数の行数で、E列まで参照(この場合選択という表現の方がわかりやすいかも)します という意味です。 つたない説明ですみません。 参考URLには、私がこの関数を覚えたサイトをご紹介します。

参考URL:
http://www2.odn.ne.jp/excel/
  • siroutom1
  • ベストアンサー率20% (50/240)
回答No.2

荒業ですがC~E選択削除、G~Eを選択削除! 印刷後に戻るボタン2回。 安全策でシートのコピーを作り、同じ作業。 終了後にシートの削除!

  • kamejiro
  • ベストアンサー率28% (136/479)
回答No.1

A1からE10まで全てをドラッグで範囲指定をします。 [データ]-[フィルタ]-[オートフィルタ]を処理します。 A1からE1までの各タイトルに[▼]が出ます。 D1のセル(つまり数量)の[▼]をクリックし、(空白以外のセル)を選ぶと数値の入った行のみが表示され、このまま印刷すると良いです。 元に戻すには、もう一度、[データ]-[フィルタ]-[オートフィルタ]を処理します。 関数ではありませんが、割と簡単にできると思います。

marlborough
質問者

補足

ご回答ありがとうございました。すいません、フィルタの処理を 自動で(都度、注文者にフィルタをかけて印刷 させるのではなく)できる方法はありませんか?

関連するQ&A

  • エクセルの印刷で、計算結果0の時、その行を印刷しない方法は?

    エクセルを使って、数量を入れるだけで、金額が出る様に 作ってみたのですが、 数量×単価=金額 A 10×100=1000 B  0×100=0   の時 ← このBの行を印刷しないという 様にしたいのですが、どうしたら良いのでしょうか? 教えてください、お願いします。

  • エクセル 表の自動追加

    エクセルで見積書を作成しています。 単純化して書きますと    A      B        C    D   E 1 商品コード 商品名    単価   数量  金額               合計¥~~ vlookup関数を使ってA列に商品コードを入力B列に商品名、C列に単価が引用され、後はD列の数量を入力すればE列の金額および合計金額が出るというようにしているのですが、 A~Eが埋まれば自動的に2行目が合計との間に挿入されるような関数?などはあるのでしょうか。現在では15行程度の表があるのですが、もっと数が増えたときや、数が少ないときに〆の線を引くのが面倒なのです。  私自身はエクセルはネットで独学程度で学んでいるので詳しくありません。自分でいろいろ調べたのですが(と言ってもネットで調べただけですが)VBAを使用しなければ難しいでしょうか? 拙い文章で申し訳ありませんが、ご教授のほどよろしくお願いいたします。

  • エクセルで一行毎、一枚づつ自動でプリントアウトしたいです。

    エクセルで一行毎、一枚づつ自動でプリントアウトしたいです。      A列   B列 5行目  品名   数量  6行目  商品A   1 7行目  商品B  45 8行目  商品C   6 9行目  商品D   0 10行目 商品E   8 11行目 商品F   0  :    :    :  :    :    : 現在は Sheet1に上のような表があり Sheet2に製品明細の雛型がたくさん作ってあり、 品名と数量をSheet1から参照し入力された状態になっており 数量が0のもの以外を選択して手動で印刷しています。 今後は 製品明細の雛型は1つで 製品明細を1行毎を1枚に印刷し 数量が0のものは印刷しないように自動でできるようにしたいです。 どのようなマクロを作れば良いのでしょうか?

  • エクセルで作る見積表の抽出印刷方法??

    エクセルで見積表を作りたいと考えています。商品名、単価をあらかじめ入力しておいて、後で数量さえ入力すれば合計金額が出るという、よくあるタイプのものです。 しかし、ここまでなら私にも作成出来るのですが、問題はこの後です。数量を入力した商品、単価、数量、金額、最終的な合計金額のみを印刷できるようにしたいのです。つまり、その都度、数量を入力していない商品(行)を省いて印刷したいのです。そうしないと商品の量が多い為に、大変な枚数になってしまい、分かり難い見積表となってしまいます。 また、もう1つお願いがあるのですが、実際、見積表の数量を入力する営業さん達は、エクセルについては超初心者ばかりです。抽出して印刷する方法は、出来るだけ分かりやすいものだと助かります。しかし無理であれば、どんな方法でも構いません。教えてください!!宜しくお願いします。補足が必要であれば致します。

  • Excelでマクロを使った印刷教えてください

    仕事でExcel2003を使い、お客様の注文に応じた商品のラベルを社内で印刷するよう にしようと考えています。 シート1には、 A列に100行(種類)ほど、商品の型式がそれぞれのB列に商品名、それぞれのC列に ロット番号、それぞれのD列に数量の項目があります。 A及びB列は新商品が出ない限り追加や、変更はありませんが、C及びD列はその都度変 わります。 AとBとCの情報を別のシート2に参照させて表示するところまではできました。 その情報をシート2で拡大等をしてラベルにしたいので、数量に応じてB5のラベル シートに印刷すると共に、数量の入力の無い箇所は無視するような事をしたいのです が、方法はありませんか? よろしくお願いします。

  • ■エクセルで請求書作成

    みなさんお世話になります。 お知恵をお貸しいただければ幸いです。 エクセルにて売り上げの一覧がございます。 例) A1------B1-----C1----D1-----E1----- Aさん 商品A 数量 単価 支払い方法 Bさん 商品A 数量 単価 支払い方法 Cさん 商品A 数量 単価 支払い方法 Aさん 商品B 数量 単価 支払い方法 Cさん 商品B 数量 単価 支払い方法 という横へデータを入力した一覧です。 Aさん、Cさんが違う商品を2回に分けて購入。 よって、2行に入力してあるのですが・・・ これを月末でしめた時に、Aさんに対しての請求書で 請求書  Aさん 1月請求合計額 ●●円   明細   商品A 数量 単価 支払い方法   商品B 数量 単価 支払い方法 と請求書を作る方法はございませんでしょうか? 同時に、Aさんの入力場所にBさんの名前を入れるとBさんの請求書が完成し・・・ 可能ならAさん・・・Bさん・・Cさん・・Dさんと次々に請求書を自動で印刷する事もできる方法もございますでしょうか? VLOOKUP関数でも調べてやってみましたが、同じ商品が重複して2度出てきたり、Aさんでうまくできても、Bさんでおかしくなったりで、本日1日中費やしてしまいました。 =IF(A1="","",(A1,売上データ!$A$1:$E$5,2,FALSE)) として、請求書のエクセルページにA1へAさんの名前を入れると売上データの商品Aが表示されますが、Aさんは2品目購入なので、下段以降にセルをコピーすると同じデータが反映されてしまい・・ どうかお知恵をお借りできれば幸いです。

  • エクセルで注文書を印刷したい。

    またまた教えてください。 エクセルで注文書を発行印刷したいのです。 Sheet1に注文すべきデータだあります。 セルA1から 仕入先コード 仕入先名 商品コード 商品番号 品目名 単価 注文数  001      AAA   A111    A001  ABC   100  10  001      AAA   A112    A002  ADD   200  50  050      FFF   F555    F051  TYI   500  10 があります。 Sheet2には注文書のフォームがあります。明細行は7桁です。 このとき、仕入先は二つあります。001  と  050  最初に001を印刷し連続して050を印刷する。仕入先をグループをして 印刷はできるのでしょうか?

  • EXCELでマクロを使った検索・一覧抽出の方法を教えてください。

    社内文章の表を作成しているのですが、あまりにもデータ量が多く、関数での算出が難しくなってきたので、 マクロを導入したく思っているのですが、検索しても当てはまるものが無く、困っています。。。  | A  | B  | C  | D  | E  | F  | G  | H  | I  | J  | K  | 1|名称1|名称2|数量 |種類1|数量1|種類2|数量2|種類3|数量3|条件1|条件2|・・・ 2|    |    |    |    |    |    |    |    |    | (1) | (1) |・・・ 3|*****|*****|*****|***** |***** |*****|*****|*****|*****| (2)  | (2)  |・・・ 上記のような表があり、今までは関数にて、(1)のセルに検索条件を入力し、(2)のセルに「=SUMIF(D2:H2,A2(1),E2:I3)という式を入れ計算していました。 種類1~種類3に入力されている情報と(1)が合致したら、数量1~数量3を合計した値を(2)へ記入したいのです。 この検索条件が60項目あり、行数も2000行を超えているのですが、、全てのセルに関数を入れている状態です。

  • エクセルで条件にあう複数行から最小日付を調べたい

    エクセル関数でどなたかご教授ください。 sheet1に発注日、商品コード、数量、入荷予定日が100行ほど入っています。 発注日順ですが、商品コードの同じ行は複数あり、また商品コード順ではありません。 (A) 1/20 CODE1 1,000 2/11 (B) 1/21 CODE2 2,500 2/04 (C) 1/21 CODE3 2,000 2/02 (D) 1/25 CODE1 1,500 2/14 (E) 1/27 CODE1 1,000 2/16 あるセルで商品コードを指定すると、数量合計と【最初の入荷予定日】が出るようにしたいのです。 数量はCODE1の場合sumifで(A+D+E) 3,500 と出せました。 ただ、 最初の入荷予定日=2/11 を求めるには、どんな関数を使えばいいのかわかりません。 ミニマム関数が使えれば、並び順にかかわらずできそうなのですが、 可変条件の場合どんな記述になるのでしょうか? よろしくご指導お願いいたします。

  • エクセル 印刷するとセルがくっつく

    エクセルで表を作っています A列に日付、Bに商品名、Cに数量 という表です。罫線をセルごとにひいています。 印刷プレビューで確認すると正しく表示されるのですが印刷すると11行目12行目でCに入っているはずの数量が、Bの商品名にくっついて印刷され、Cの数量は空欄になってしまいます。罫線だけはは正しく印刷されます。また10行目迄と13行目からも正しく印刷できます。 11.12行目を削除して再入力してみたり他の行をコピーしたりしたのですがどうしても直りません。 原因と対処方法を教えて下さい。

専門家に質問してみよう