2ページ分の売上表を作りました。
売上表の中身は、別シートに入力されたものが入るようになってます。

2ページある売上表の各ページにページ毎の合計を表示するセルがあります。
合計を表示するセルは
1ページ目はS81 式は=SUM(T16:T78)
2ページ目はS165 式は=SUM(T89:T163)
                        となっています。
現在印刷する時は、合計の入ってないページが印刷されないように改ページプレビューで設定してるんですが、これを自動化することはできないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ご利用のエクセルのバージョンがご相談に書かれていませんので詳細の手順をお話し出来ませんが,「印刷範囲の設定」を行うと「名前の定義」にPrint_Areaという名前が自動発生します。


この名前の参照範囲を数式で指定することで,シート上の今現在の姿を拾って印刷範囲を自動設定させることが出来ます。


またご相談に書かれた状況説明がどうも不明瞭なので詳細の手順をお話し出来ません。
>各ページにページ毎の合計を表示するセルがあります。
>合計を表示するセルは
>…となっています。

のように合計のセルに式が入っているハズなのに,

>合計の入ってないページが印刷されないように改ページプレビューで設定してる

合計は入っていないというのはどういう事でしょうか。


また
>1ページ目はS81
>2ページ目はS165 

のように,各ページの行数も一定(たとえば81行ずつ)というワケでも無さそうですね。これでは範囲を計算で求めることも出来なさそうです。



とりあえず泥臭いやり方で手順をお話ししますので,適宜ブラッシュアップしてご利用下さい。

前提)
印刷ページ数は1ページか2ページかのどちらかである
S165セルに合計の数字が算定されていた場合は2ページあると見なす
そうでないときは1ページだと見なす
シート名はSheet1だとする

手順:
印刷範囲の設定を行う
名前の定義に発生したPrint_Areaの参照範囲を
 名前 Print_Area
 参照範囲 =IF(Sheet1!$S$165>0,Sheet1!$A$1:$S$165,Sheet1!$A$1:$S$81)
のように書き換える。
    • good
    • 0

印刷したい部分以外は、セルのプロパティで「印刷しない」としてはいかがですか。

    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

Qエクセル2010で表の印刷範囲を自動指定したい

次の2つの質問があります。マクロ以外の方法で教えてほしいです。


【質問1】
表Aのピンク部分のみ出力したいため、以下の手順で設定したところ、表Aの黄色部分(行10)まで出力されてしまいます。どのように修正したら良いでしょうか。

※表Aと表Bの印刷範囲は縦横とも同じで、縦(列数)はA列の”1”をカウントした数(可変)です。

 1.A1に表示したい行数を入力
 2.印刷範囲を指定 → B3:D10
 3.名前の定義を設定 → 参照範囲・・・ =$B$3:OFFSET($B$3,0,2,$B$2)


【質問2】
質問1と同条件で表A(ピンク部分)と表B(オレンジ部分)を出力したい場合、どのような設定をすればよいか教えてください。


よろしくお願いいたします。

Aベストアンサー

 大変失礼致しました。

>マクロ以外の方法で教えてほしいです。

という一文を見落としておりました。
 マクロ以外となりますと、印刷範囲の設定を自動化する事は困難ではないかと思います。
 只、印刷範囲そのものは変更せずとも、条件付き書式を使用して、「A列に1が表示されていない行」を非表示にする事は出来るかと思います。(但し、A列に1が表示されていない行も、非表示になっているだけで、実際にはデータは存在していますから、余分な行のみを含んだページでは白紙が印刷される筈です)

A1セルセルを選択
  ↓
[ホーム]タブ内の「スタイル」グループの中にある[条件付き書式]ボタンをクリック
  ↓
現れた「スタイル」グループの中にある[条件付き書式]ボタンをクリック
  ↓
現れた選択肢の中にある[ルールの管理]をクリック
  ↓
現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック
  ↓
現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック
  ↓
現れた「次の数式を満たす場合に値を書式設定」欄の中に

=$A1<>1

と入力
  ↓
「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック
  ↓
現れた「セルの書式設定」ダイアログボックスの[表示形式]タブをクリック
  ↓
現れた「分類」欄の中にある[ユーザー定義]をクリック
  ↓
現れた「種類」欄に

;;;

と入力
  ↓
「セルの書式設定」ダイアログボックスの[罫線]タブをクリック
  ↓
現れた「プリセット」欄の中にある[なし]ボタンをクリック
  ↓
「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック
  ↓
現れた[色なし]ボタンをクリック
  ↓
「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック
  ↓
「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック
  ↓
「条件付き書式ルールの管理」ダイアログボックスの「適用先」欄をクリック
  ↓
A1セルから「何らかのデータが存在している最終行におけるH列のセル」までの範囲をまとめて選択
  ↓
「条件付き書式ルールの管理」ダイアログボックスの[適用]ボタンをクリック
  ↓
「条件付き書式ルールの管理」ダイアログボックスの[OK]ボタンをクリック

 大変失礼致しました。

>マクロ以外の方法で教えてほしいです。

という一文を見落としておりました。
 マクロ以外となりますと、印刷範囲の設定を自動化する事は困難ではないかと思います。
 只、印刷範囲そのものは変更せずとも、条件付き書式を使用して、「A列に1が表示されていない行」を非表示にする事は出来るかと思います。(但し、A列に1が表示されていない行も、非表示になっているだけで、実際にはデータは存在していますから、余分な行のみを含んだページでは白紙が印刷される筈です)

A1セルセル...続きを読む

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Q指定した範囲の値で順番にソートをかけて、指定した表を印刷していくVBAについて

Excel2010を使っている者です。
指定した範囲の値で順番に表①の任意の列にソートをかけて印刷していくVBAを作りたいと思っております。

具体的には、A1からA20の各セルに値が入力してあるのですが、表①(セル範囲はA30からS500)のF列に順番にソートをかけて、順次、印刷したいと思っております。

なお、A1からA20についてですが、上から順番に必要がある場合のみ値を入れるようになっているため、全てのセルは使わない可能性が高いです。(A1からA8のみ値が入っている日もあれば、A1からA15まで値が入っている日もあれば、A1からA3までしか値が入ってないときもあればです)

私はネットで調べながら以下のようにVBAを作ってみたのですが、実行しようとすると「Nextに続くForがありません」というメッセージが出てしまいます。

どのような記述にすれば良いのか、ご教示願います。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

Sub 印刷()

Dim i As Long

For i = 1 To 20
If Cells(i, 1) = "" Then
Exit Sub
Range("A30:S500").AutoFilter Field:=7, Criteria1:=Cells(i, 1).Value
Next i

ActiveSheet.PrintOut

End Sub

Excel2010を使っている者です。
指定した範囲の値で順番に表①の任意の列にソートをかけて印刷していくVBAを作りたいと思っております。

具体的には、A1からA20の各セルに値が入力してあるのですが、表①(セル範囲はA30からS500)のF列に順番にソートをかけて、順次、印刷したいと思っております。

なお、A1からA20についてですが、上から順番に必要がある場合のみ値を入れるようになっているため、全てのセルは使わない可能性が高いです。(A1からA8のみ値が入っている日もあれば、A1からA15まで値が...続きを読む

Aベストアンサー

こんばんは!
少しだけコードの説明を!

① For k = 31 To 500  ”31行から500行までKを使ってループを行う
本来であれば最終行を取得しそこまでのループにすればよいのですが、
必ず500行目まではデータがある!という前提のコードでした。

② If Rows(k).Hidden = False Then  ”もし、K行が表示されていれば
myFlg = True  ”myflgにはTrueを入れる。
Exit For  ”ループをやめる?
End If  ”?
Next k  ”次の行の処理に移る?

フィルタを掛けるというコトは30行目は項目行でデータは31行以降にあると思い
31行目からその行が「表示」されているかどうか?を調べています。
>End If  ”?
の部分は
>If Rows(k).Hidden = False Then
に対する「End If」です。
仮に「myFlg」が「FALSE」である場合は「TRUE」になるまで、もしくは500行目までループします。

「myFlg」はBoolean型で宣言していますので、「FALSE」(初期値)か「TRUE」のどちらかになります。
仮に31行目が表示されているというコトは少なくとも1つ以上の該当データがあるので
「myFlg」を「TRUE」とし、それ以降ループしても無意味なのでそこでループを抜けます。
ただ、該当データがない場合は500行目まで「FALSE」となり続けます。

最終的に「myFlg」が「TRUE」なのか?「FALSE」なのかを判定し
「TRUE」の場合 → 該当データが1つ以上はあるので印刷プレビューへ
「FALSE」の場合 → 該当データが存在しないのでメッセージボックスを表示!
といった流れにしています。

最後の
End If  ”?  (あ)
myFlg = False  ”?(い)
End If  "?(う)
Next i

(あ)は
If myFlg = False Then
に対する「If」の「End If」になる。

(い)は
次のループに入り前に「myFlg」を初期値の「FALSE」に戻します。
これを行わないと常に「TRUE」のままになりデータがない場合でも印刷プレビューが表示されてしまう。

(う)の「End If」は
>Next i
の前にあるので
>If Cells(i, j) <> "" Then
に対する「End If」になります。

※ こちらのVBE画面は↓のように記載し、「End If」はどこの「If・・・」にかかっているのか
タブ送りで判りやすく訂正しやすいようにしているのですが
それをそのままこの画面にコピー&ペーストすると
左寄せになってしまうので判りにくいですよね。m(_ _)m

こんばんは!
少しだけコードの説明を!

① For k = 31 To 500  ”31行から500行までKを使ってループを行う
本来であれば最終行を取得しそこまでのループにすればよいのですが、
必ず500行目まではデータがある!という前提のコードでした。

② If Rows(k).Hidden = False Then  ”もし、K行が表示されていれば
myFlg = True  ”myflgにはTrueを入れる。
Exit For  ”ループをやめる?
End If  ”?
Next k  ”次の行の処理に移る?

フィルタを掛けるというコトは30行目は項目行でデータは31行以降にあ...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Qセルに印刷範囲を入力して別sheetを印刷したい

Sheet2に10ページ分の表があり、その表の印刷したいページを
Sheet1のセルA1に印刷開始ページを入力して、
セルA3に印刷終了ページを入力して、
sheet2の必要な分の表だけを印刷したいのですが、
どのようにしたらいいのでしょうか。

よろしくお願いします

Aベストアンサー

印刷するには、Printoutメソッドを使います。こんな感じです。
Sheets("Sheet2").printout Sheets("Sheet1").Range("A1"), Sheets("Sheet1").Range("A3")

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

Qエクセル 作成したパターン表を元に、パターン番号を入力するだけで別の表に自動で式が代入できたら…

いつも皆さんにはお世話になりありがとうございます。
仕事で以下の表を作成しなければならなくなり、ものすごく行き詰まってます。どうぞ助けて下さい。

パターン1のときは合計額のうちAさん50%、Bさん30%、Cさん20%の取り分、
パターン2のときはAさん30%、Bさん25%、Cさん45%の取り分、
パターン3のときはAさん10%、Bさん65%、Cさん25%の取り分……
以降パターン10まであり、それを表にしました。

別の表にそのパターン番号と合計額を入力すると自動的に計算されていくという
便利な関数はありませんでしょうか…?
VLOOKUPを使いましたが、数字や文字列ではなく式の代入なので
パターン番号を変えると対応してくれませんでした。
使い方がまずかったのか、もういくら考えてもできません。
宜しくお願いします。

Aベストアンサー

たとえば以下のような表だとしたら
A B C D
1 パターン 1 50 30 20
2 パターン 2 30 25 45
3 パターン3 10 65 25
4 パターン 合計額
5 パターン2 100

Aさんのセル =VLOOKUP($A$5,$A$1:$D$3,2,FALSE)/100*$B$5
Bさんのセル =VLOOKUP($A$5,$A$1:$D$3,3,FALSE)/100*$B$5
Cさんのセル =VLOOKUP($A$5,$A$1:$D$3,4,FALSE)/100*$B$5

でそれぞれ値が取り出せます。

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Qエクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位

エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位置に値を表示させたい

シート2の
A列に番号(連番)
B列に商品名(数字とアルファベットの組み合わせ)
C列に仕入先(数字4桁)
D列にメーカー(数字4桁)
E列に区分(数字とアルファベットの組み合わせで3ケタ)
が入っていて約5,000行のデータが有ります。

シート1にレイアウトした表があって
シート1のB4にシート2のA2の値(番号連番)
シート1のB5にシート2のB2の値(商品名)
シート1のB6にシート2のC2の値(仕入先)
シート1のB7にシート2のD2の値(メーカー)
シート1のB8にシート2のE2の値(区分)
が表示されるようにしてあります。

マクロを利用して、作成したシート1のボタンを押すと
シート1のセルB4の番号欄が1から2(シート2のA3の値)に繰り上がり、
シート1の表のA列の番号と同じ行のそれぞれの値を
上記の規則で表示させるようにできますか?

シート1のB4が2になるとシート1の3行目をさしますので
シート1の表には、
シート1のB4にシート2のA3の値(連番)
シート1のB5にシート2のB3の値(商品名)
シート1のB6にシート2のC3の値(仕入先)
シート1のB7にシート2のD3の値(メーカー)
シート1のB8にシート2のE3の値(区分)
が表示されます。

シート1のボタンをクリックするごとにB4のセルは3,4,5,6と繰り上がり
シート2のA列の番号と一致した行のそれぞれの値を表示させていく。

エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位置に値を表示させたい

シート2の
A列に番号(連番)
B列に商品名(数字とアルファベットの組み合わせ)
C列に仕入先(数字4桁)
D列にメーカー(数字4桁)
E列に区分(数字とアルファベットの組み合わせで3ケタ)
が入っていて約5,000行のデータが有ります。

シート1にレイアウトした表があって
シート1のB4にシート2のA2の値(番号連番)
シート1のB5にシート2のB2の値(商品名)
シート1のB6にシート2...続きを読む

Aベストアンサー

こんばんは!
参考になるかどうか判りませんが・・・
ごく単純にやってみました。

↓の画像でSheet1にコマンドボタンを一つ貼り付けます。

デザインモードで貼り付けたコマンドボタン上でダブルクリックし
↓のコードを貼り付けてみてください。

Private Sub CommandButton1_Click()
Cells(4, 2) = Cells(4, 2) + 1
If Cells(4, 2) = Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Row Then
Cells(4, 2) = 1
End If
End Sub

そして、Sheet1のB5セルに
=IF(B4="","",VLOOKUP($B$4,Sheet2!A:E,ROW(A2),0))

という数式を入れ、オートフィルB8セルまで下へコピーすると
画像のような感じになります。

これで何とか希望に近い形にならないでしょうか?

以上、参考になれば良いのですが
他に良い方法があれば読み流してくださいね。m(__)m

こんばんは!
参考になるかどうか判りませんが・・・
ごく単純にやってみました。

↓の画像でSheet1にコマンドボタンを一つ貼り付けます。

デザインモードで貼り付けたコマンドボタン上でダブルクリックし
↓のコードを貼り付けてみてください。

Private Sub CommandButton1_Click()
Cells(4, 2) = Cells(4, 2) + 1
If Cells(4, 2) = Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Row Then
Cells(4, 2) = 1
End If
End Sub

そして、Sheet1のB5セルに
=IF(B4="","",VLOOKUP($B$4,Sh...続きを読む


人気Q&Aランキング