プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (5件)

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

一例になれば。

この回答への補足

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

配列で構成したほうが一番いいと思うので、配列についてはもう少し勉強し直します。

補足日時:2013/03/16 19:16
    • good
    • 0

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
みたいな。

この回答への補足

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

cells(n, "H") = cells(n, "H") + cells(r, "F")

補足日時:2013/03/16 19:00
    • good
    • 0

マクロでなく、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]
を設定。

この回答への補足

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

補足日時:2013/03/16 19:03
    • good
    • 0

>下記のところでエラーがでます。



どんなエラーが出たのか不明なので詳しい事は判りませんが,恐らくあなたの実際のワークシートが,ご相談で書かれている内容とは違ってるのが原因です。


変更前:
cells(n, "H") = cells(n, "H") + cells(r, "F")

変更後:
cells(n, "H") = application.sum(cells(n, "H"), cells(r, "F"))



#具体的に「このマクロの行で」「こんな風に書かれてるエラーが現れた」「どこまで進んでマクロが止まった」「止まったときのワークシートはこんな内容が記入されている」などのように,目に見える様子を何でも詳しくご質問に書いて下さい。

この回答への補足

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

何度も申し訳ないですが、ご教授お願いします。

補足日時:2013/03/16 20:33
    • good
    • 0
この回答へのお礼

すみません。
cells(n, "H") = application.sum(cells(n, "H"), cells(r, "F"))
で解決しました。

宣言した定数が一つ異なっているという単純なミスでした(><)
何度もご丁寧に本当に、ありがとうございました。

お礼日時:2013/03/16 20:40

No1です。



エラーが出ますだけでは・・・

記載している情報と実際のセル位置が違うとか、
金額には”円”がついているとか、
どこかセルを結合しているとかなどの
問題じゃないかな????
    • good
    • 0
この回答へのお礼

返答ありがとうございました。

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

2度もご返答ありがとうございました。

お礼日時:2013/03/16 20:44

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