dポイントプレゼントキャンペーン実施中!

節約とコスト把握のため使用枚数の値段を出すため
コピー用紙使用記録の資料作成をしているのですが

提出用の紙(形式固定)の部分は1セルのみ、なので
=PRODUCT()が使えません

理想としては、提出用の紙1枚だけに入力できる方式で
例えば、セルに使用枚数を入力しただけで、単価5円が自動的に計算されるようにしたいのですが

EX:セルA1に計算結果を出力するとして、=PRODUCT(A1)*1

しかし、変数と式の両立は難しいでしょうからどうすればよいのでしょう?




ちなみに、現在の方式は
別ページに (A1:1枚当たりのコスト)、(A2:枚数)、(A3:=PRODUCT(A1,A2))
で、提出用の用紙に(=A3)としているのですが
理想形のように、シンプルにすることはできませんか?

A 回答 (6件)

体裁を整えたいとおっしゃるようですので、再度アドバイス。



入力フォームと印刷フォームを分けて使えば良いんじゃないですか?
シート一枚でやりたいなら 「印刷範囲の設定」 でも十分な気がします。
でなければ入力確定後に起動するタイプの「マクロ」で処理です。
マクロについては他のかたからアドバイスがありますので、そちらを参考にしてみてください。
    • good
    • 0
この回答へのお礼

ありがとうごzぁいました。

お礼日時:2012/01/25 22:35

この質問の意味がよくわからない。


シートに例データでも作って、入力済みデータはどうで、どういう結果を出したいのか、文章でも説明出来るようになれ。
自分の考えていることお呼び情況を他人に説明する技を磨くほうが、大切なスキルだ。
PRODUCT関数に関する利用回答など、このコーナーでも見たことない。10年以上質問をみているが。
我流のやり方ではないのか?
難しいことを考えて、質問を連発する前に、単純なやり方がないか、質問すべきだが、
>セルに使用枚数を入力しただけで、単価5円が自動的に計算されるようにしたいのですが
総コストを枚数で割れば仕舞いなのではないか?
    • good
    • 0
この回答へのお礼

ありがとうごzぁいました。

お礼日時:2012/01/25 22:35

NO3です。


追加質問はマナー上、好ましくありません。一旦質問を締めて改めて質問するように
した方が良いと思います。

又、マクロコードの意味も理解されないまま、ノリで変更されておられますが非常に
危険である事を認識して下さい。(PCがフリーズする事があります)

仮にA1:B3範囲とした場合の一例です。
各コードについてはweb検索等で十分理解される事を望みます。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:B3")) Is Nothing _
Or Target.Count > 1 Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 0 Then
If Target.Column = 1 Then
単価 = 5
Else
単価 = 10
End If
Application.EnableEvents = False
Target.Value = Target.Value * 単価
Application.EnableEvents = True
End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうごzぁいました。

お礼日時:2012/01/25 22:35

>変数と式の両立は難しいでしょうからどうすればよいのでしょう?


 ⇒関数では出来無いのはエクセルの常識ですのでマクロ(VBA)組込みになります。

一例です。
対象シートタブ上で右クリック→コードの表示→以下のコード貼り付けてA1に枚数を入力して
お試しください。

サンプルコード
Private Sub Worksheet_Change(ByVal Target As Range)
単価 = 5
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 0 Then
 Application.EnableEvents = False
 Target.Value = Target.Value * 単価
 Application.EnableEvents = True
End If
End Sub

この回答への補足

また、引き続き質問なのですが

EX:(セル)  
 セル番号  用紙種類1~3       用紙種類
   A1   A3モノクロ1     B1  A3カラー1
   A2   A3モノクロ2     B2  A3カラー2
   A3   A3モノクロ3     B3  A3カラー3
※金額の違いは、モノクロとカラーの値段が違うだけ
 1~3は金額的な違いはない
とあった場合、

ためしに先ほどのを応用して用いたのですが
変更点は、用紙サイズ、カラーの有無による金額
       出力先セルの番号
Private Sub Worksheet_Change(ByVal Target As Range)

Private Sub A4_mono_1(ByVal Target As Range)
Private Sub A4_mono_2(ByVal Target As Range)
・ 
           ・
           ・
と変更したのですがうまく動作しなかったのですが、
どういった点が悪かったのでしょうか?

補足日時:2012/01/11 00:20
    • good
    • 0
この回答へのお礼

ありがとうございました。
無事動作しました

お礼日時:2012/01/11 00:12

掛け算のセルに紙の枚数を記入してしまっては,折角用意した掛け算の式を書き潰してしまうだけですから,当然そんな使い方は出来ません。



#余談
自動マクロを使い,そういった仕込みを出来ないワケじゃありません。
ただしエクセルは今記入されたのが「10(枚)」なのか「50(円)」なのか知るよしもありませんので,50が入った瞬間に「50枚ですね,5倍してハイ250デス」その直後に「250枚ですね,ハイ1250デス」…と延々無限ループを始めるだけです。


指定の書式が印刷して出すだけのモノでしたら,たとえば用紙の金額記入セルが「D5」セル辺りにあったとすると,表の範囲外(印刷範囲外)のJ5セル辺りに「枚数記入セル」を用意しておき,D5には
=J5*5
と数式を記入しておきます。
あとは実際にエクセルにデータを打ち込むアナタが知っているシクミとして,J5セルに枚数を記入し印刷して提出してください。

#もひとつ余談
掛け算するのにPRODUCT関数を使うと,ときたま「間違った結果」が計算される場合があるので注意してください。
たとえばB1セルに
=PRODUCT(A1,5)
と記入してA1の5倍を計算したかったのに,A1がまだ空っぽのままだと5円と出てきます。
掛け算はワザワザ関数とか使用せず,普通に掛け算の数式で計算します。


もし,記入したエクセルを電子データで提出しているのなら,J5セルは例えば「文字色を白にして一見するとナニも汚してない」体裁にしても構いません。
    • good
    • 0
この回答へのお礼

ありがとうございます・

お礼日時:2012/01/11 00:22

>EX:セルA1に計算結果を出力するとして、=PRODUCT(A1)*1



そもそも循環関数になっている。
何らかの関数式で計算できたとしてもエラーで弾かれますよ。

別に提出用の印刷フォームがあるなら、それで良いんじゃないのかな。
…と自分は思うんだ。
    • good
    • 0
この回答へのお礼

ありがとうございます。

これをテンプレとし役員で使いまわそうと思うのですが
PCに疎い方もおられるため、
記入欄に枚数打つだけで、仕上がるようにしたいそうです。

お礼日時:2012/01/11 00:22

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