エクセル2000で作成した見積書があるのですが、内訳の中で、例えば

品名、 規格、単位、数量、単価、金額 の欄があり

金額の欄のセル内に=数量*単価の計算式が入っています。
項目の内、数量が1個、とか1式の場合に限り、印刷の時に単価の金額だけを空白で印刷したいのです。(今までは全て印刷していました。)
もちろん金額の欄に直接入力しちゃえば良いのですが、金額欄のセル内の計算式はいじりたくないのです。VBAが今ひとつわからず悩んでいます。
わかり難かったら補足いたしますのでよろしくお願いします。

A 回答 (8件)

では、1枚のシート上に作成する方法を説明します。



基本的な考え方は前回と同一で、入力する部分と印刷する部分に分けます。
現在使用されているシートの必要な列数以上の列をA列の前に挿入します。
全く同じものをコピーされても結構です。

仮に品名、単位・・・金額が「A~F列」になっているとします。
印刷する側の範囲には次のように定義します。
下記の「n」は行をあらわしています。Dは数量、Eは単価です。

数量の欄に =IF(Dn>0,Dn,"")・・・・・数量は、そのまま表示
単価の欄に =IF(Dn<=1,"",En)・・・・・単価は数量が1又は0の場合、空白
金額の欄に =Fn・・・・・・・・・・・金額は、そのまま表示
ただし、上記の式は数量が自然数でなければなりません。

あとは、印刷する時にこの範囲(印刷用)だけを印刷するように定義すればよいと思います。(ファイル-印刷範囲-印刷範囲の設定)

印刷部分は、忘れずに保護を掛けておいて下さい。
    • good
    • 0
この回答へのお礼

その通りですね。印刷範囲を限定すれば良いのですか。
なんとか解決しそうです。ちょっと急用でいなくなりますが、後ほどやってみようと思います。ありがとうございました。
それと出来ればVBAでも書いてみたいので、図々しいようですが、よろしくお願いします。(後学の為?)

お礼日時:2001/09/15 15:42

参考にマクロを書いてみました。

印刷時に数量=1の場合、単価のセルの色を白にしています。

シート側には何も仕掛けはいりませんが、印刷範囲は設定して下さい。
コードを短くするため単価の列をセットするようにしました。『単価列 = 5』の『5』には、『単価』列が印刷範囲内で左から何列目かをセットして下さい。自動的に設定も可能ですが長くなるので・・・

『Public Const以下を』標準モジュールに貼り付けます。

Public Const 単価列 = 5 '印刷範囲での『単価』が入っている列

'印刷前に数量1の場合の単価を隠す(色を白にする)
Public Sub Insatu()
  setColorIndex True 'フォント色を白に
  ActiveSheet.PrintPreview '今は印刷プレビュー
  setColorIndex False 'フォント色を戻す
End Sub

'Trueでフォント色を白にする。Falseで戻す
Public Sub setColorIndex(OnOff As Boolean)
  Dim rw As Long
  With Range("Print_Area")
    For rw = 1 To .Rows.Count
      If OnOff = True Then
        If .Cells(rw, 単価列 - 1) = 1 Then
          .Cells(rw, 単価列).Font.ColorIndex = 2
        End If
      Else
        .Cells(rw, 単価列).Font.ColorIndex = xlAutomatic
      End If
    Next
  End With
End Sub
    • good
    • 0
この回答へのお礼

お忙しいところ回答ありがとうございます。
とりあえずNo.7の方の設定でやってみたいと思っています。
もう少しVBAを勉強します。(ちょっと難しいです)

お礼日時:2001/09/17 10:29

i-haradaです。



マクロを利用されて下さい。
「単価1」と「単価」を作り、「単価1」を入力用として「単価」印刷用として下さい。「新しいマクロの記録」で、保護を使われるようですから保護を解除して「単価1」がある列を「非表示」にして印刷するようにして下さい。
これをマクロボタンを作り設定すれば良いのでは。

単価は =IF(「数量」=1,"",「単価」)としてください。
VBAがお分かりじゃないようですから、後で修正できるものにしてみました。
    • good
    • 0
この回答へのお礼

お忙しいところ何度もアドバイスありがとうございます。
今、急用が出来ましたので、後ほどやってみます。

お礼日時:2001/09/15 15:35

こんにちは!



私も1案

印刷範囲が既に設定されて入るとして

1.単価の欄に 書式 条件付き書式
 数式が =$X$1 (印刷範囲外であれば何処でもOK)
 書式ボタン フォント色 白

2.記録マクロ
 記録開始
  セルX1に1を入力
  印刷
  セルX1に0を入力
 記録終了

3.フォーム のボタンを配置
 記録されたマクロを登録
 ボタンを右クリック 書式設定 プロパッティ [オブジェクトを印刷する]のチェックを外す
 適当にテキストを編集(例[印刷])

この回答への補足

アドバイスありがとうございます。しかしながら当方の無知により、
>>1.単価の欄に 書式 条件付き書式
  数式が =$X$1 (印刷範囲外であれば何処でもOK)
のところで止っちゃいました。”数式が =$X$1”を入れるとエラーになるのです。 

補足日時:2001/09/15 15:25
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
回答履歴でいろいろと勉強させてもらっています。
これからもよろしくお願いします。

お礼日時:2001/09/17 10:21

値を入力する部分と、印刷する部分を分けることが望ましいと思います。


例えば1枚目のシートを入力用に、2枚目のシートを印刷用に決めておく方が処理は処理しやすいのではないでしょうか?

1枚目の「単価」と「金額」が同一なら(即ち、数量が1)ならば2枚目(印刷用)の「単価」の部分をnull("")となるように定義すれば実現できるでしょう。

この回答への補足

皆様お忙しいところをいろいろとありがとうございます。
わがままばっかりで・・・実は数人で使っているため、(不慣れな人がいる)
出来るだけ1シートで使って、保護をかけておきたいのです。
見積りの枚数=シートの枚数が理想なのですが。

補足日時:2001/09/15 14:40
    • good
    • 0

i-haradaです。



忘れてました。

=IF(「数量」>0,「単価」,"") 
「単価」は 単価金額の数値にして下さい。
それと金額のセルは「Iserror」で処理しないと「数量」が0の時「#VALUE」になります。

=IF(ISERROR(「数量」*「単価」),0,(「数量」*「単価」))
    • good
    • 0
この回答へのお礼

回答ありがとうございます。エクセルは難しいのでもっと勉強します。
これからもよろしくお願いします。

お礼日時:2001/09/17 10:16

i-haradaです。



内容が良くわからないんですが、固定の表に数量を入力した時だけ単価が表示されるようにするのでしたら、単価のセルに

=IF(「数量」>0,「単価」,"") で良いのではないでしょうか?

お役に立つかどうか判りませんが。

この回答への補足

説明がへたですみません。自分で入力するのは金額欄以外です。これが複数行あります。数量、単価が入らなければ金額欄は非表示なのですが、例えば、数量1式、単価10000円、金額10000円では単価と金額が重複します。これを解消したいのですが・・・。

補足日時:2001/09/15 14:31
    • good
    • 0

 セルの書式設定-ユーザー定義で,「;;;」と入れると,そのセルは,入力しても文字は非表示になります。

この回答への補足

うまく説明できなくてすみません。例えば数量 2 個、単価 100 を打ちこんだ場合は単価は表示、印刷。数量が1の場合だけ単価の印刷はしない。と言う設定にしたいのです。

印刷した時に・・
数量...単価.....金額
2......100....200
5........50.....250
1..................600 (単価の所へは直接入力、表示されても良いのですが印刷時は空白にしたい)
4........20.......80

こんな感じですが、わかりますでしょうか。ピリオドはスペースとして下さい

補足日時:2001/09/15 14:28
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
>書式設定-ユーザー定義で,「;;;」と入れると,そのセルは,入力しても文字は非表示になります。・・これも参考になりました。

お礼日時:2001/09/17 10:14

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

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

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

QExcelのセルに選択式の品名欄を作る?

発注書作りたく、商品名入力欄をプルダウンメニューの様に表示し入力できる方法は無いでしょうか。

 つまり、りんご10kg/りんご5kg/長芋10kg/長芋5kg/ぶどう2kg・・・とあったとします。
 これらを発注書から見えない何処かのセルの列に入力しておきます。
 発注書には住所・会社名・電話・担当者名などと、注文する品名を入力する欄があります。
 この品名の欄が重要で、たまにどっちか判断し難い品名を書く人がいるため、Mailでやり取りする上で、品名の欄はマウスでクリックすると品名一覧が出て選択するとその品名が入るようにしたいのです。(相手に品名を作らせない(笑)ようにしたい)

できるだけ簡単に設定できる方法を教えてください。
Excelは、Office2000professionalです。使っている私は中の下くらいの知識しかありません。(マクロとか全然ダメ・・・)
宜しくお願いします。

Aベストアンサー

 以前私が同種の質問をさせていただきましたので、
その回答URLをご参考ください。
 不明な点等あれば補足いたします。
教えて頂いた million-showさんに感謝です。

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=129498

QEXCEL関数で数量別単価表から該当する単価を表示させる方法が知りたい

Sheet1に下記のような数量別単価表があります。

品番 数量(個) 単価(円)
001 100-199 500
001 200-299 450
001 300-399 420
001 400-499 360
001 500-599 300
001 600-     220

002  300-599   90
002  600-999   88
002  1000-1499  85
002  1500-1799  81
002  1800-1999  80
002  2000-     79
・・・以下品番500程度まであり、それぞれ数量と単価の設定が変わってきます。この表を元にSheet2のセルに品番と数量を入力すれば、自動的に条件にあう単価を表示させる方法がわからず困っております。お知恵をお貸し下さい。
※品番001の数量「600-」の表記は600個以上はすべて単価220円という意味です。

Aベストアンサー

#8のWendy02です。

一応、確認を待たずに、ユーザー定義関数のVLOOKUPに似たものを作って完成しています。ただ、少し大きめなのと、最近、私のミスが多くなってきておりますので、動作試験をしばらく繰り返します。
今の段階では、まったく問題は出ていません。イレギュラーなパターンを探して、試しています。

#←ここが問題*
という問題は、こちらで解決させてしまいました。

#変更されたデータと、そうでないベタ・データでは、段違いにベタのほうが難しいです。

これは無視してください。

#今のデータは、以下のようなベタで打ち出したような状態になっているのですか?

なお、ベタのデータが、どのぐらいあるのかは、まだ気になるところです。たぶん、1万行程度は、まったく問題がないと思います。一応、品番は、並べ替えて、同じものが並んでいるという条件です。

なるべく見切り早いうちに、掲示します。お使いになるかは別問題ですが。

Qエクセル関数でA列(品名)D列(金額)・・品名ごとに合計

A列に品名があり、D列に金額があります。

  A   B   C   D
1 商品1        ¥100     
2 商品2        ¥150
3 商品1        ¥100
4 商品3        ¥200
5 商品2        ¥100

求めたい答えは各商品ごとの合計金額なのですが、関数で可能ですか?(VBAになりますか?)

 商品1  ¥200
 商品2  ¥250
 商品3  ¥200

宜しくお願いします。(アクセスでやれと言われそうですが・・)

Aベストアンサー

こんにちは。

■作業列を使う方法です。

Sheet1 の F列を作業列にします。(作業列はどの列でもかまいません)

Sheet1 の F1に↓
-----------------------------------
=IF(COUNTIF($A$1:A1,A1)=1,ROW(),"")
-----------------------------------
この数式を予測されるA列の最大行までコピーしてください。
A500 までデータが入るだろうと思えば、F500までコピー。

Sheet2 の A1に↓
-----------------------------------------------
=IF(COUNT(Sheet1!F:F)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!F:F,ROW(A1))))
-----------------------------------------------

Sheet2 の B1に↓
-----------------------------------------------
=IF(A1="","",SUMIF(Sheet1!A:A,A1,Sheet1!D:D))
-----------------------------------------------
上の2つの数式を、商品の種類の数+アルファ、コピーしてください。
商品の種類が最大50種類ぐらいだと思えば、50行+アルファ

作業列が目障りなら非表示にしてください。

こんにちは。

■作業列を使う方法です。

Sheet1 の F列を作業列にします。(作業列はどの列でもかまいません)

Sheet1 の F1に↓
-----------------------------------
=IF(COUNTIF($A$1:A1,A1)=1,ROW(),"")
-----------------------------------
この数式を予測されるA列の最大行までコピーしてください。
A500 までデータが入るだろうと思えば、F500までコピー。

Sheet2 の A1に↓
-----------------------------------------------
=IF(COUNT(Sheet1!F:F)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(S...続きを読む

Qエクセルの住所録から条件式のあうものだけを宛名印刷し、印刷後印刷回数のセルを加算させる方法

エクセル形式の住所録があります。1行に1人のレコードになっており氏名、郵便番号、住所(市町村名)、住所(番地以降)は、それぞれ別々の列に、はいっています。
また、各レコードごとに宛名を印刷した回数を入力してある列があります。

今、やりたい作業は、
1.過去に宛名を印刷した回数を元に名簿の中から選び出したリストにハガキ宛名印刷をし、回数を1つ増やす。例えば、過去に2回印刷し、送付した名簿に3回目のハガキ印刷をし、その方の回数のセルのところを3に書き換える作業を自動的にやりたいのです。

また、できればここまで一挙に自動でできればありがたいのですが
2.任意に選択したリストから、過去の印刷回数に応じて、ハガキの宛名の下半分の欄にそれぞれ異なったコメントを刷り込み、印刷し、かつ印刷回数の数字を1つ増やす。

レコードは、固定的なものでなく、下に頻繁に新しい方が付け加わり、また行の削除により消して行くものもあります。

専用ソフトを買うことは考えてないので、エクセル、ワードなどのソフトを利用してやる方法を教えてください
ワードの差込印刷にVBAを、組み合わせて条件検索と送付回数の自動的書き換えをさせるといいらしいのですが、やり方がわからないので。

もちろん他にいい方法があれば、それでも結構です

エクセル形式の住所録があります。1行に1人のレコードになっており氏名、郵便番号、住所(市町村名)、住所(番地以降)は、それぞれ別々の列に、はいっています。
また、各レコードごとに宛名を印刷した回数を入力してある列があります。

今、やりたい作業は、
1.過去に宛名を印刷した回数を元に名簿の中から選び出したリストにハガキ宛名印刷をし、回数を1つ増やす。例えば、過去に2回印刷し、送付した名簿に3回目のハガキ印刷をし、その方の回数のセルのところを3に書き換える作業を自動的にやり...続きを読む

Aベストアンサー

私も仕事があって、直ぐとはいかず、前の質問に今答えを上げました。前のを締めきらず、そのままにして、同じような質問を上げるのは規約違反です。
私は一応コーディング例を上げましたが、OKWEBは業務解決丸投げの場ではないと思うので節度を持って疑問点を絞り質問してください。

Qエクセル2007のセル内を計算式表示印刷したいのですが

エクセル2007で教えてください。
全部のセルを計算式表示で印刷したいのですが、どうすればいいのでしょうか。 2000だと「ツール」→「オプション」→「表示」→「ウインドウオプション」→「数式」というようになってますが、2007ではどうするのかわかりません。
又、「Ctrl」+「Shift」+「’」では一つのセルしか数式表示しないのですが、シート全体を計算式にして印刷するにはどうしたらいいのでしょうか。
よろしくお願いします。

Aベストアンサー

こんにちは
2007が手元に無いのですが
「数式」タブの「ワークシート分析」での「数式の表示」
かと思います。
Ctrl+Shift+`(アクサン グラーブ)(←@の位置のキー)
はシート全体に効かないのですか... おかしいですね。

では。


人気Q&Aランキング

おすすめ情報