• ベストアンサー

任意のセルに小計、合計と入力したら自動計算してくれ

エクセル2007でVBAを何度も挫折しています 任意のセルに小計、合計と入力したら自動計算してくれるVBAの方法を教えてください セル G21 商品名 L21 詳細 V21 数量 X21 単位 Z21 単価 AD21 金額(V21:数量*Z21:単価) の何処にでもある見積書なのですが 任意のG行に小計・合計と入力すると AD行に金額が自動で入力させるVBAの仕方が知りたいです。 3行ほどの見積もあれば100行を超える見積もあります 教えてください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

シート名タブを右クリックしてコードの表示を選び,現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim ta as range  dim ha as range  dim h as range  dim d as range  set ta = application.intersect(target, range("G22:G" & cells.rows.count))  if ta is nothing then exit sub  for each ha in ta.areas  for each h in ha  if h = "合計" then   cells(h.row, "AD").formula = "=SUBTOTAL(9,AD21:AD" & h.row - 1 & ")"  elseif h = "小計" then   set d = range(range("G21"), h.offset(-1)).find(what:="小計", after:=h.offset(-1), lookin:=xlformulas, lookat:=xlwhole, searchdirection:=xlprevious)   if d is nothing then set d = range("AD21")   cells(h.row, "AD").formula = "=SUBTOTAL(9,AD" & d.row + 1 & ":AD" & h.row - 1 & ")"   set d = range(h.offset(1), cells(cells.rows.count, "G")).find(what:="小計", after:=h.offset(1), lookin:=xlformulas, lookat:=xlwhole, searchdirection:=xlnext)   if not d is nothing then    cells(d.row, "AD").formula = "=SUBTOTAL(9,AD" & h.row + 1 & ":AD" & d.row - 1 & ")"   end if  end if  next  next end sub G列に小計や合計と記入する。 合計はまぁ1つしか無いという事にして,小計は上下で重ならない範囲を計算することにします。これに伴い,既存の小計範囲に割り込んで小計を挿入した場合は,既設小計の範囲を縮小します。 2層以上の中計小計をしたいときは,アウトラインの機能などを組み合わせてエクセルが最初からもっている集計の機能などを使って下さい。 ていうか,一体どこからどこまでの小計を出させたいのかは,あなたが本来考えて必要なら「こうしたい」をご相談すべき内容です。

その他の回答 (4)

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

>任意のG行に小計・合計と入力すると Gなどは列を指定するために使う。 だから何のいみかわからない。 数量X単価を出すなら、VBAで処理するにしても、 =Range("V21")*Range("Z21") あるいはセルにFormulaで式を入れる方法もある。 で良いのでは。 >小計・合計と入力すると なぜこういう文字列を入れる必要があるのか。 ーー 私が質問の意味を、誤解しているかも知れないが、原因はデータ例の構成を(数行で良いが)を質問文に書かないからだと思う。 ーーー これはどういう場面で計算するのか 1社の明細が入力を終わったとき? 1行のデータを入力が終わったとき? 何か合計ボタンに様なものをクリックしたとき?(<-小計、合計と入力したら、はこの意味か?) ーーー >3行ほどの見積もあれば100行を超える見積もあります これは1社辺りのことか。 ひょっとしてSUMPRODUCT関数で出来ることを言っているのか Σ単価X数量のいみで 単価X数量の行合計か?

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

ワークシート関数でもできる事をVBAで実現しようとしている事はご質問者がVBAをマスターしたいという事と想定すると質問の丸投げはやめて挫折しているコード等を質問すべきと思います。

  • mate0128
  • ベストアンサー率30% (31/103)
回答No.3

VBAでなく、エクセルの普通の計算式を入れればいいですね。 AD21に「=V21*Z21」の数式を入れておけば、自動的に入りますが、普段は、非表示にしておくのであれば、IF関数を使います。 任意のG列を仮にG2とします。 それでAD21に次の式を入れます。 =IF(G2="小計",V21*Z21,"") これは、G2に小計と入力された場合、V21とZ21をかけた答えを表示する、という意味です。

  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.1

セル G21 商品名 ・・・・・AD21 金額(V21:数量*Z21:単価) これは見出し行で、その下にデータが入力されるという事でいいのかな?? >エクセル2007でVBAを何度も挫折しています ちなみに今回はどういうVBAを考えて、どこで挫折しているんでしょうか?? G行の最下段を選択して、その直情のデータ入力行(Ctrl+↑)へ飛んで >任意のG行に小計・合計と入力すると この位置を選び、そこから相対的に23セル右(ADxx)を選んで、AD22からの合計を出す式を入力する ・・・・・こんなんじゃ駄目かな??

関連するQ&A

  • Excel VBA 「小計」と入力したら自動計算

    エクセルの小計の計算について質問いたします。    A列    B列      C列   D列     E列    F列 1 施設名  2      商品名,内容   1    単位     単価    金額(数量×単価) 3      商品名,内容   1    単位     単価    金額(数量×単価) 4                              小計     ●●●● ――――――――――――――――――――――――――――――――― 5 施設名 6      商品名,内容   1    単位     単価    金額(数量×単価) 7      商品名,内容   1    単位     単価    金額(数量×単価) 8      商品名,内容   1    単位     単価    金額(数量×単価) 9                              小計     ●●●● ―――――――――――――――――――――――――――――――――                                合計     ●●●● 施設名ごとに項目が複数あり、施設ごとに項目の数も違います。 これを施設ごとに●の所に小計を出したいです。 「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんなVBAを組めばいいのかわかりません。 理想としてはにE列に小計という文字を入れるとF列に自動で計が出るようにして、さらに小計の合計を最後の行のセルにだしたいです。。 さらに、見やすくなるように小計の下のセルにA~Fの間に太線を引いて施設ごとの区切りがわかるようにしたいです。。 繰り返し作業ばかりで大変です。 どなたか知恵をお貸しください。

  • Excelでセルに「小計」と入力したら自動に計算してくれる関数

    行タイトルが品名、数量、金額の表で、品名の列に途中で「小計」と入力すると、金額の列に数字が表示されるようにしたいです。 行が長くなり、「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんな関数を使えばいいのかわかりません。(マクロを組むようになるのでしょうか) どうぞ、よろしくお願いいたします。

  • エクセル 計算が自動的に切り替わらない

    こんにちわ お願いします。 会社で見積書を作成してます。 エクセルで見積書作成したファイルを基にコピーし、数量、単価だけを変更、別見積書作成しました。その際自動的に合計数量が計算されません。(計算される時もあります。) 計算方法は、基の見積表:数量x単価=合計金額 総合計はzで入力して見積書作成しています。 前に作成した。見積書をコピーして数量などを変更して出したいのです。 良いファイルの作成方法があれば教えて下さい。 よろしくお願いします。

  • Excelの集計表で固定していない小計があり、計算結果を上位の小計行に入れたい

    エクセル2K使用で300行程度の表があり、2行目まではタイトル行です。 品名L列 個数M列 単位N列 単価O列 金額P列 備考Q列← 2行目 完成品 1 組 (小計の計)(総合計) ← 3行目 小計   2   口  (O5:O8) (M*O)     ← 4行目 品名A  2   個 10 20 ← 5行目 品名B  3   本 10 30      ← 6行目 品名C  2   個 5 10      ← 7行目 品名・  ・ ・ ・ 20      ← 8行目 品名・  ・ ・ ・ 20      ← 9行目 小計 (O :O ) (M*O) ←・行目 品名・  ・ ・ ・ ・      ←・行目 品名・  ・   ・ ・ ・      ←・行目 品名・  ・   ・ ・ ・      ←・行目 品名・  ・   ・ ・ ・      ←・行目 ・ ・  ・   ・ ・ ・      ←・行目 ・ ・  ・   ・ ・ ・      ←・行目 合計            (小計の計) L列の一番上の小計は固定です、2ツ目以降の小計は固定していません。 P列の金額を上位の小計列の単価に入力して再計算したい 合計はP列(表の最終行)の合計金額欄に表示したい、3行目完成品単価は合計 金額の(小計の計)と同じ金額です、3行目を見積書に転記したいと思っています。 集計表には空白セルが存在します。 宜しくお願いします。

  • エクセルで列が自動挿入する明細書

    エクセルVBAの勉強をしています。 見積明細書なのですが、横列は明細・数量・単位・単価・金額・備考の横並びセル群から成り、その明細行は下方へ数行繰り返されて、最後にそれらを合算する小計、消費税、合計金額行が来ます。 ここで聞きたいのが、数行程度の明細行+小計・消費税・合計行の簡単なものを作っておいて、最後の明細行に記入すれば自動的にもう一行の空欄明細行が挿入されて、小計行以下は計算結果を表示しつつ自動的に一行繰り下がる、というものはできるのでしょうか。

  • 入力した合計数値を振り分けたい

    関数とかマクロなど理解していない初心者でエクセル2003を使用しいます。 例えば 1Aのセルに1~10個(単価50円)と入力済 2Aのセルに11~20個(単価40円)と入力済 3Aのセルに21~30個(単価30円)と入力済 1B~3Bのセルに個数欄未入力 1C~3Cのセルに金額自動計算式入力済 4Bのセルに合計個数欄未入力 4Cのセルに合計金額自動計算式入力済 とした場合、例えば4Bの合計個数に29個と入力すると、自動的に1Bに10個、2Bに10個、3Bに9個と個数が振り分けられる様にしたいのですが、できるのでしょうか?

  • エクセルで不特定の項目ごとに合計を自動計算したいのですが。

    こんな表があったとします。 品名  数量  単価  金額 りんご  10  250  2500 ばなな  8  120  960 すいか  15  700  10500 ばなな 3 120 360 りんご 21 250 5250 ↓ りんご 7750 ばなな 1320 すいか 10500 こんな感じに自動で入力された商品ごとの合計金額を計算したいのです。 商品は不特定ですのでどんなものが入力されるか分かりません。 宜しくお願いいたします。

  • エクセル連続していない不規則な数値セルの小計を右隣空白セルに一発で出すには?

     エクセル2000で定期的に部材の出庫表を作成しているのですが、日々、データーが変動し、表が更新されます。    A   B  C  D  E  F  G 1コード   1  2  3  4  5  6  2名称   数量 ← ← ← ← 3部材1  10  5    4部材2  30 24     8 5部材3  25    40 15     23 6部材4      8 15     32 7部材5      9  18 8部材6  20 30  45       45 7  上記のような形式で表が作成され、実際はもっと横長の表になります。  各部材はB3以降に数量が記載され、最右端に合計セルがあります。数値セルの各行に所々、空白セルがあります。(セルには数式は入っていない)  少しでも表を見やすくしたいので、数値データーセルが連続しているセルの右隣の空白セルに簡単に小計を差し込みたいのですがその方法が分かりません。  仕方ないので手動にてCTRLキーを押しながら任意の数値セルを選択し、Σで合計していますが、作業が進まず、ミスも出ます。  上記の表の部材1ですと、B3、C3の合計(小計)15を空白のD3セルに、部材3ならD5、E5の小計55をF5に、部材6ならB8、D8の合計95をE8に表示させたいのです。 過去にもこの質問をしたのですが、VBAでないと出来ないのでしょうか?私はVBAでの記述がよく理解できません。他に簡単に連続する数値セルの合計を右隣の空白セルに表示する方法は無いでしょうか?IF関数等を入れたりしていますが、循環エラーが出たり、上手く行かず、教えていただけませんか?手入力しか無理でしょうか?これで困っています。

  • ACCESS 合計の計算方法

    入力して作成したマスターから グループ、数量、単価、入力日付ごとにデータを 抜きすクエリーを作成したのですが 最終的にだすレポートに 数量×単価の合計金額をグループと日付別に出そうと考えています。合計の出し方がよくわかりませんので 教えいていただきたいです

  • エクセルの小計を自動的に色づけするには

    こんにちは。 仕事で使用しているのですが、エクセルの「小計」で出てくる行を自動的に色づけする方法があれば教えていただきたいです。毎回、データを追加で入力するたびに小計を外して、また小計を出してセルを色づけしているので大変手間がかかっています。 会社のPCのエクセルはXPの2003を使用しています。 よろしくお願いします。

専門家に質問してみよう