• ベストアンサー

Excelで最後まで計算式を入れる方法

Excelで請求明細書を作っています。 F列に単価、G列に数量、H列に金額を入れるとします。 月によって明細の行数が変わるので、H列全ての行にF*Gの計算をさせるよう指定するにはどのようにしたらいいのでしょうか? 最後の行まで計算式をコピーするのでもいいのですが、その場合、シート全体が印刷範囲になってしまいますよね? 明細が入っている行までをいちいち印刷範囲に指定するのはめんどうなので、計算式だけ全ての行に入れておき、印刷は実際数字が入っているところまで、というようにしておきたいのですが、方法がわからないので、教えてください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Faye
  • ベストアンサー率24% (601/2496)
回答No.2

実際に試してはいないのですが… 「ツール」「オプション」内の「表示」内に「ゼロ値」がありますので、そのチェックをはずせば、ゼロは表示されません。 ほかに「必要な」ゼロがないのであれば(表の中にゼロがあっても非表示でかまわないなら)、これだと見た目はゼロがないので… 自信なしですが。 または、計算式を =IF(ISBLANK(A1),"",F1*G1) にしてみてはどうでしょう? A1は日付を入れる欄とか、必ず入力するセル番地を入れます。 これまた自信なしですが。

その他の回答 (3)

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

>シート全体が印刷範囲になってしまいますよね? 請求明細は罫線などは、印刷可能最下行まで、引いてないのですか。 私の見たのは印刷罫線が下まで専門業者印刷してあって、明細が途中まで入っているのが多かった。 どうせ別の請求先の請求書の印刷のために改ページせねばならないので印刷を止めるわけに行きません。 その場合シートの当ページ全体に=IF(OR(F2="",G2=""),"",F2*G2) 式をいれてはどういう不都合が起こるのでしょうか。 2ページに渡る行数になることを考慮するなら、2ページには見だし設定をしているのでしょうか。 見だしと空白の用紙が印刷されるのでしょうか。 こう言うビジネス向けの外部へ出す文書をエクセルで作るのは、VBAが必要と思います。例えば印刷そのものの指令は関数では出来ませんから。 こう言うパターンのVBA例を上げておきます。 単価*数量=金額などの計算式そのものをいれません。プログラムで計算します。 Sub test02() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet2") Set sh2 = Worksheets("sheet6") d = sh1.Range("A65356").End(xlUp).Row MsgBox d m = sh1.Cells(2, "A") '第2行から請求データ,A列に請求先 j = 2 '請求明細も第2行から For i = 2 To d '第2行から最下行までについて繰り返し If sh1.Cells(i, "A") = m Then '前行と請求先変ったか Else '変ったら印刷し請求明細をクリア sh2.Cells(1, "A") = m sh2.Range(sh2.Cells(1, "A"), sh2.Cells(j - 1, "C")).PrintOut sh2.Range(sh2.Cells(2, "A"), sh2.Cells(j - 1, "C")).Clear j = 2 m = sh1.Cells(i, "A") End If sh2.Cells(j, "A") = sh1.Cells(i, "B") '請求原簿から請求明細へ sh2.Cells(j, "B") = sh1.Cells(i, "C") '請求原簿から請求明細へ '数量*単価を計算 sh2.Cells(j, "C") = sh1.Cells(i, "B") * sh1.Cells(i, "C") j = j + 1 Next i sh2.Cells(1, "A") = m sh2.Range(sh2.Cells(1, "A"), sh2.Cells(j - 1, "C")).PrintOut '最後の印刷 End Sub

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

式は =IF(OR(F2="",G2=""),"",F2*G2) の様にして、ある程度の行コピーしておいて 「オートフィルタ」で印刷前に不要な行を非表示にすればいいのではないですか? 非表示の行は印刷されません。 印刷後に「データ」「フィルタ」「すべて表示」にするか 「オートフィルタ」を解除すればいいと思います。

回答No.1

Excelの場合、なんらかの数式が入っている限り、 答が空白でも印刷の対象になってしまいます。 ・印刷範囲を指定する方法  式をすべてコピーしても、印刷範囲を設定すれば、  指定した場所しか印刷されません。 ・コピーするときの範囲指定の方法  もうひとつの方法というか、アドバイスです。  Excelでコピーをするとき、マウスをドラッグする人が多いですが、  なかなかうまく行きません。  範囲指定はキーボードでやった方が楽です。  たとえば、今回の事例の場合、  1.最後のデータの入力が完了する。   (アクティブセルは最終行のG列)  2.アクティブセルを一つ右にずらし、H列に移動する。  3.[Shift]+[ctrl]+[↑]を同時に押す。    H列に式の入った行までが範囲指定される  4.この状態で[CTRL]+[D}を押す    必要な部分だけに式がコピーされる

関連するQ&A