• ベストアンサー

合計金額を出力するマクロについて知りたい

E・F列は既に入力されています。 下記のようにG列・H列にマクロで出力できるようにしたいのです ■例 ----E-----F-----G-------H 07--名前A --金額---名前A---名前Aの合計金額 08--空白---金額---名前B---名前Bの合計金額 09--名前B --金額---名前C---名前Cの合計金額 10--空白---金額---合計---名前A~名前Cの合計金額 11--空白---金額 12--名前C --金額 13--合計--合計金額 ご教授お願い致しますm(_ _)m

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

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

>下記のところでエラーがでます。 どんなエラーが出たのか不明なので詳しい事は判りませんが,恐らくあなたの実際のワークシートが,ご相談で書かれている内容とは違ってるのが原因です。 変更前: cells(n, "H") = cells(n, "H") + cells(r, "F") 変更後: cells(n, "H") = application.sum(cells(n, "H"), cells(r, "F")) #具体的に「このマクロの行で」「こんな風に書かれてるエラーが現れた」「どこまで進んでマクロが止まった」「止まったときのワークシートはこんな内容が記入されている」などのように,目に見える様子を何でも詳しくご質問に書いて下さい。

hiro721
質問者

お礼

すみません。 cells(n, "H") = application.sum(cells(n, "H"), cells(r, "F")) で解決しました。 宣言した定数が一つ異なっているという単純なミスでした(><) 何度もご丁寧に本当に、ありがとうございました。

hiro721
質問者

補足

エラー箇所→ cells(n, "H") = application.sum(cells(n, "H"), cells(r, "F")) エラー出力→「実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラーです」 止まったときのワークシートには、名前Aだけが出力されています。 何度も申し訳ないですが、ご教授お願いします。

その他の回答 (4)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

No1です。 エラーが出ますだけでは・・・ 記載している情報と実際のセル位置が違うとか、 金額には”円”がついているとか、 どこかセルを結合しているとかなどの 問題じゃないかな????

hiro721
質問者

お礼

返答ありがとうございました。 >>エラーが出ますだけでは・・・ おっしゃる通りです(><) ですが、 誠に勝手ですが、自分の知識不足により、エラー原因追求が できない状態でした。 2度もご返答ありがとうございました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

マクロでなく、sumif関数で実現できます。 セルH7に式[=sumif(E7:E12,"=名前A",F2:F12)] セルH8に式[=sumif(E7:E12,"=名前B",F2:F12)] セルH9に式[=sumif(E7:E12,"=名前C",F2:F12)] セルH9に式[=sum(H7:H9] を設定。

hiro721
質問者

補足

ご回答ありがとうございます。 残念ながら、名前は変動しますので、関数ではできないんです。 説明不足で、すみません。

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

7行目から金額が記入してある前提で。 sub macro1()  dim r as long  dim n as long  n = 6  range("H7:H65536").clearcontents  for r = 7 to range("E65536").end(xlup).row   if cells(r, "E") <> "" then    n = n + 1    cells(n, "G") = cells(r, "E")   end if   cells(n, "H") = cells(n, "H") + cells(r, "F")  next r end sub みたいな。

hiro721
質問者

補足

ご回答ありまがとうございます。 分かりやすいプログラムだったのですが、下記のところで エラーがでます。原因について考えたのですが、分かりません。 お手数ですが、どのようなプログラムを入力すればよいのか、 ご教授お願いできないでしょうか? 宜しかったらお願いします(><) cells(n, "H") = cells(n, "H") + cells(r, "F")

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim myDic As Object Dim r As Range Dim st As String Dim v As Variant Set myDic = CreateObject("Scripting.Dictionary") For Each r In Range("E7", Cells(Rows.Count, 5).End(xlUp)) st = IIf(r.Value <> "", r.Value, st) If Not myDic.Exists(st) Then myDic(st) = Array(r.Value, r.Offset(, 1).Value) Else v = myDic(st) v(1) = Val(v(1)) + r.Offset(, 1).Value myDic(st) = v End If Next Range("G7").Resize(myDic.Count, 2).Value = _ Application.Transpose(Application.Transpose(myDic.Items)) Set myDic = Nothing End Sub 一例になれば。

hiro721
質問者

補足

ご回答ありがとうございます。 ご回答いただいて申し訳ないですが、エラー表示されてしまいます。 配列で構成しているのではと思い考えてみましたが、やはり理解できず。 配列苦手で(^^;) すみません(><) 配列で構成したほうが一番いいと思うので、配列についてはもう少し勉強し直します。

関連するQ&A

  • 可視セルへのコピー マクロ

    次のように、可視セルから可視セルへコピーしたいです。 (元の状態) A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 aさん 済    150 bさん 済    200 cさん 未    150 dさん 済    100 eさん 未    120 fさん 済    250 gさん 未    300 hさん 未    210 この状態をB列で支払が済んでるかどうかでフィルターをかけて ABC列をコピーし、DEF列に可視セルのみコピーして A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 cさん 未    150  cさん 未    150 eさん 未    120  eさん 未    120 gさん 未    300  gさん 未    300 hさん 未    210  hさん 未    210 フィルターをはずすと A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 aさん 済    150 bさん 済    200 cさん 未    150   cさん 未    150 dさん 済    100 eさん 未    120   eさん 未    120 fさん 済    250 gさん 未    300   gさん 未    300 hさん 未    210   hさん 未    210 と、未払いの人だけ、D列以降にもコピーされてる状態にしたいのです。 可視セルへのコピーはマクロを組む必要があると聞いて見てるのですが、 私が実現させたい可視セルへのコピーとまた違うプログラムでした。 どなたかよろしくお願いします。

  • (エクセル)数値だけ合計したい

    複数のセルに入力されている数値だけを抽出し、合計したいと思います。   A     B    C    D    E    F    G 1 合計金額 金額1  金額1理由 金額2  金額2理由 金額3  金額3理由 2      1000円   菓子  3 1500円  1000円   菓子   500円   飲料 4 1520円  1000円   菓子   500円   飲料   20円   消費税 以上のようにA列に合計金額を計算させる数式を考えています。 (ルール) ・B列とC列、D列とE列、F列とG列はセットです。例えば、B列には入力されているが、C列は空白ということはない ・B列とC列→D列とE列→F列とG列の順に入力されていく ・2行目、3行目のように、常に金額が3つとも入力されているとは限らない ・金額が入力されているB列、D列、F列には、「○○円」と「円」も一緒に入力されている (やりたいこと) A列に合計金額を反映させないのですが、以下のように規制したいです (1)2行目のように、金額が1つだけの場合(B列とC列しか入力されていない場合)は、合計金額は空白セルにする (2)3行目、4行目のように、金額が2つ以上の場合(D列とE列や、F列とG列にも入力されている場合)は、合計金額を反映させる (3)合計金額は「○○円」と「円」も一緒に反映させる (考えたこと) B列の金額とB列+D列+F列の合計を比較し、同じならA列は空白、違う場合はB列+D列+F列の合計をA列に反映させるようIF関数を使えばいいのではないか、と考えました。 そこで、まずB列+D列+F列の合計を出す関数を作ってみたのですが、うまくいきませんでした。 =SUM(SUBSTITUTE(B2,"円","")*1,SUBSTITUTE(D2,"円","")*1,SUBSTITUTE(F2,"円","")*1) とすると、金額が3つとも入力されていればいいですが、一つでも空白セルがあると、#VALUE!とエラーになってしまいます。 SUMPRODUCTを使用してできるかと思いましたが、同じ結果でした。 どうすれば、思っているようになるのでしょうか。 ご存知の方がいましたら教えてください。 よろしくお願いします。

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • SUMの合計金額が合わない、金額のずれを直すには?

    EXCEL 2007 を使用しています 電気の請求額一覧を次の数式を入れて作成しました。 12社分の個別金額を出し→各社H.E+F請求額を→オートSUMで12社分合計を出しました 下記の様な詳細金額を含めた請求額を1つの表の中で12社分出しております (例.1社分の請求額の詳細) A.今月メーター数 B.先月メーター C.A-B=KWh D.KWh小計 E. あ+い のD計 F.請求額D*27円 G.消費税F×0.05 H.E+F請求額 ----------------------------------------------------------------------------------------------------------------- (例)1社分のメーター詳細 あ-1=A.今月メーター数 5,115 B.先月メーター 4,496 C.A-B=KWh619 あ-1+あ-2の合計KWh=814 あ-2=A.今月メーター数80,429 B.先月メーター80,234 C.A-B=KWh195 い-1=A.今月メーター数13,627 B.先月メーター13,112 C.A-B=KWh515 い-1+い-2の合計KWh=747 い-2=A.今月メーター数68,843 B.先月メーター68,611 C.A-B=KWh232 ↓↓↓ あ+い のD. KWh小計=1,561 あ+い のF.請求額小計=42,147 あ+い のF.請求額消費税=2,107 ---------------------------------------------------------------------------------------- ↓↓↓ 1社分請求額 (1社分のメーター=あ+い)= H.E+F→ 44,254円 ---------------------------------------------------------------------------------------- この作成した「詳細金額請求書」の各企業請求額を元に「単純な合計金額一覧」を別のExcelに作りました 単純に企業名と企業別請求金額だけを入力し、12社分 オートSUMで合計金額を出したのですが、 このExcel合計金額と「詳細金額請求書」の12社分合計金額が1円差が有り、困っております 勿論、2つのExcelとも各企業12社分の請求額はぴったり同じなのですが、オートSUMの合計金額 の箇所だけが1円差が出るのです? 今までこの様なことが無かったのでどうしていいか分かりません? 電卓で合計金額を計算したところ、「詳細金額請求書」の方の合計金額が1円違っている様です どう質問していいのか分からず、細かく書きわかりづらい説明をしましたが この数字が合わせるにはどうしたら良いのか教えて下さい!!

  • エクセルの合計金額の計算について

    C列に金額A、E列に金額Bの数値が複数入力されています。 金額Aにあって金額Bにない場合、金額A列の合計をB列と同じ件数で合計する方法を教えてください。

  • 合計していくマクロ

    一行目にタイトルがあって A1・・・日付 C1・・・氏名 E1・・・交通機関 F1・・・金額 2行目からはデータが入力されているのですが A2 9/1 C2 田中 E2 バス   F2 100 A3 9/2 C3 田中 E3 タクシー F3 1000 A4 9/3 C4 田中 E4 バス   F4 200  というふうに・・・ これを 氏名ごと、交通機関ごとに金額を合計して 残りを消去するマクロをつくりたいのですが 結果  A2 --- C2 田中 バス 300 A3 --- C3 田中 タクシー 1000 どういう方向でつくったらよいかおねがしします

  • かんたんなエクセルマクロを教えてください!

    エクセルマクロを勉強しはじめたばかりのものです。 列にある、様々な文字列で、同じ名前があったときに、 その個数を出すようにするにはどうしたらよいでしょうか? 【例】   C 1名前 2りんご 3メロン 4いちご 5りんご 6レモン 7メロン 8すいか 9メロン 10空白 Cの列に様々な名前の品物があります。そのときに、行の2~9(9はもっと長いときがあり、制限のないものとします) の中の文字列で、同じものがあったときに、その名前と個数を出すようにしたいのです。(C1は見出しなので省きます) 上記の例でしたら、「りんご」が2個、「メロン」が3個あります。2個、3個という数えた個数はB列の同じ場所の一番上に上書きで 出す形で結果を表示したいと思います。例でいえば、「りんご」は2個だったので、B2に「2」と出力。メロンは3個だったので、 B3に「3」と出力させたいのです(B列にはすでに他の文字列が入っています。それを数値で上書きします。) C列をたどって、同じ文字がないときには、「同じものはありません」とメッセージボックスで出力するようなマクロです。 例ではC9までですが、このケースではC10は空白になります。C100まであったときにはC101が空白です。 こんなカンタンなのもわからないので、ぜひお教えいただけますでしょうか?できるだけ短いものが嬉しいです。使っているエクセルはおはずかしながらEXCEL97です。 よろしくお願いします。

  • 空白セルのある場合の計算

      A  B  C  D   E  F  G  H 1 (2)     (2)     空     (3) わかりづらいかもしれませんが、 =A1+C1+E1+G1 で、数字の合計を出したいのですが、###のエラーが出ます。 E1の空白セルに数字が入るとエラーはなくなります。 どうしたら空白を0とみなして計算できますか? (空白セルはどうしても空白じゃなきゃなりません) (B列D列F列は計算対象外の数字が入力されてます)

  • EXCELでマクロを使った検索&自動計算をするには?

    いつもいろんな方に回答いただき大変助かっております。 まずはそのお礼をさせていただきます。ありがとうございます。 さて、本題ですが、 基本データとして「名前」「金額」「とある数値データ」が各々「A列」「B列」「C列」に100件未満が並んでいます。 (例)    A列 B列 C列 1行 あ様 1000  50 2  い様  10   0 ↓  ↓  ↓  ↓ 100  を様 5000 2500  そして別の場所(同じシート内)に「名前」「金額」「とある数値データ」と、同じ内容が書き込めるスペースを作り、ここにデータを入れてマクロを実行すると、既存のデータ(A~C列)の同じ名前の人へ「金額」「とある数値データ」を加算するものを作りたいのです。 (例)【基本データ】    【加算データ】    A列 B列 C列 … F列 G列 H列 I列 1行 あ様 1000  50   名前 金額 数値 ★★ 2  い様  10   0   あ様  10  62 ↓  ↓  ↓  ↓ 100  を様 5000 2500 ←マクロ実行後、5000に10が足される  マクロを実行後は加算データの入力欄(例ではF2:H2)内の数値が消されすぐに次のデータが入力できるように出来れば尚いいです。 また、A列に追加データに入力したF2と同じ名前がなかった場合、I1(★★の部分)に「該当無し」と表示したいのです。 該当がなかった場合は手入力でA列に名前を新しく入力して金額・数値を入力しますので、判定が必要なのです。 このような内容をするにはどうしたらよいのでしょうか? ちなみにマクロの実行は追加欄の近くにオートシェイプなどでボタンを作りクリックすることでマクロを起動させたいと考えています。 乱文かつ長くなりましたが、どなたか指導いただける方よろしくお願い致します。

  • 並び替え後の合計処理の方法がありますか?

    よろしくお願いします。 A列に、上からA~Fまでのアルファベット(6文字)がランダムに入って 50~100行あります。 B列に、アルファベットが持っている数字がランダムに入っています。 例; 品名  数量  A    11  A     3  D     2   F     1  F   132  C    66  B     8  A    21  B    36  C     1  C    20  A     5    E     ・  ・     ・  ・     ・ これを並べ変えると、以下のようになりますが、(ここまでは出来ます)  A    11  A     3  A    21  A     5   B     8  B    36  C    66  C     1  C    20  D     2  E     ・  ・     ・  ・     ・  ・     ・ Aの数量:11+3+21+5の合計40が機械的に現れるようにできませんか? 同様にBからDまでの合計数量も欲しいです。 行数が多いため、目で数えるとクラクラします。 よろしくお願いします。 ただし、マクロは全く理解できません。