- ベストアンサー
エクセルでの掛け算計算方法と提出用紙への自動反映方法
- エクセルでの掛け算計算方法と提出用紙への自動反映方法についてまとめました。提出用の紙の部分は1セルのみなので、=PRODUCT()が使えないため、実現方法を考えています。
- 現在の方式では、別のページにコストと枚数を入力し、=PRODUCT()で計算しています。しかし、理想形では提出用の紙1枚に入力するだけで自動的に計算されるようにしたいです。
- 具体的な方法としては、セルに使用枚数を入力しただけで単価5円が自動的に計算されるようにしたいです。現在は別ページに計算結果を出力してから提出用の用紙に反映させています。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
体裁を整えたいとおっしゃるようですので、再度アドバイス。 入力フォームと印刷フォームを分けて使えば良いんじゃないですか? シート一枚でやりたいなら 「印刷範囲の設定」 でも十分な気がします。 でなければ入力確定後に起動するタイプの「マクロ」で処理です。 マクロについては他のかたからアドバイスがありますので、そちらを参考にしてみてください。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17070)
この質問の意味がよくわからない。 シートに例データでも作って、入力済みデータはどうで、どういう結果を出したいのか、文章でも説明出来るようになれ。 自分の考えていることお呼び情況を他人に説明する技を磨くほうが、大切なスキルだ。 PRODUCT関数に関する利用回答など、このコーナーでも見たことない。10年以上質問をみているが。 我流のやり方ではないのか? 難しいことを考えて、質問を連発する前に、単純なやり方がないか、質問すべきだが、 >セルに使用枚数を入力しただけで、単価5円が自動的に計算されるようにしたいのですが 総コストを枚数で割れば仕舞いなのではないか?
お礼
ありがとうごzぁいました。
- mu2011
- ベストアンサー率38% (1910/4994)
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
お礼
ありがとうごzぁいました。
- mu2011
- ベストアンサー率38% (1910/4994)
>変数と式の両立は難しいでしょうからどうすればよいのでしょう? ⇒関数では出来無いのはエクセルの常識ですのでマクロ(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) ・ ・ ・ と変更したのですがうまく動作しなかったのですが、 どういった点が悪かったのでしょうか?
- keithin
- ベストアンサー率66% (5278/7941)
掛け算のセルに紙の枚数を記入してしまっては,折角用意した掛け算の式を書き潰してしまうだけですから,当然そんな使い方は出来ません。 #余談 自動マクロを使い,そういった仕込みを出来ないワケじゃありません。 ただしエクセルは今記入されたのが「10(枚)」なのか「50(円)」なのか知るよしもありませんので,50が入った瞬間に「50枚ですね,5倍してハイ250デス」その直後に「250枚ですね,ハイ1250デス」…と延々無限ループを始めるだけです。 指定の書式が印刷して出すだけのモノでしたら,たとえば用紙の金額記入セルが「D5」セル辺りにあったとすると,表の範囲外(印刷範囲外)のJ5セル辺りに「枚数記入セル」を用意しておき,D5には =J5*5 と数式を記入しておきます。 あとは実際にエクセルにデータを打ち込むアナタが知っているシクミとして,J5セルに枚数を記入し印刷して提出してください。 #もひとつ余談 掛け算するのにPRODUCT関数を使うと,ときたま「間違った結果」が計算される場合があるので注意してください。 たとえばB1セルに =PRODUCT(A1,5) と記入してA1の5倍を計算したかったのに,A1がまだ空っぽのままだと5円と出てきます。 掛け算はワザワザ関数とか使用せず,普通に掛け算の数式で計算します。 もし,記入したエクセルを電子データで提出しているのなら,J5セルは例えば「文字色を白にして一見するとナニも汚してない」体裁にしても構いません。
お礼
ありがとうございます・
- Cupper-2
- ベストアンサー率29% (1342/4565)
>EX:セルA1に計算結果を出力するとして、=PRODUCT(A1)*1 そもそも循環関数になっている。 何らかの関数式で計算できたとしてもエラーで弾かれますよ。 別に提出用の印刷フォームがあるなら、それで良いんじゃないのかな。 …と自分は思うんだ。
お礼
ありがとうございます。 これをテンプレとし役員で使いまわそうと思うのですが PCに疎い方もおられるため、 記入欄に枚数打つだけで、仕上がるようにしたいそうです。
お礼
ありがとうごzぁいました。