EXCELマクロ初心者です。EXCEL2002で家計簿を作成しています。
A B C
1内科 医者 1000
2弁当 食費 800
3歯医者 医者 500
4おにぎり食費 200
5 end
上記内容をEXCELに入力します。
A欄は品目、B欄はカテゴリ、C欄は金額を入力します。
これを、マクロを使ってB欄ごとに合計金額を算出したいのです。
完成イメージは以下のとおりです。
医者 1500
食費 1000
因みに、以下のようにコーディングしてみましたが、うまくいきません。
Sub ボタン1_Click()
Dim mykategori
Dim myisyakingaku
Dim mysyokuhikingaku
Range("b1").Select
Do Until ActiveCell.Value = "end"
mykategori = ("b1")
If mykategori = "医者" Then
myisyakingaku = myisyakingaku+ ("c1")・・・(1)
ElseIf mykategori = "食費" Then
mysyokuhikingaku = mysyokuhikingaku + ("C2")・・・(2)
End If
ActiveCell.Offset(1).Select
Range("D1") = myisyakingaku・・・(3)
Range("D2") = mysyokuhikingaku・・・(3)
Loop
End Sub
(1)(2)が間違っているのはよくわかっているのですが、
金額の座標軸を1つずつ下にずらす方法がわかりません。
座標軸を1つずつずらす方法を教えて下さい。
そもそも、こんなコーディングしないよ!もっと良い方法があるよ!という場合は、上記のコーディングは無視してコディング例を教えていただきたいと思います。
なお、(3)は合計金額を仮表示するために空いている箇所に適当に
表示させるためにコーディングしたものです。
あまり気にしなくて結構です。
以上、宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
>金額の座標軸を1つずつ下にずらす方法がわかりません。
Cells(ActiveCell.Row, 3).Value
と記述する方法もあります。
IF文ですが CASE文がわかりやすいかも
勉強の材料として
Range("D1").Value = 0
Range("D2").Value = 0
Range("b1").Activate
Do Until ActiveCell.Value = "end"
Select Case ActiveCell.Value
Case "医者"
Range("D1").Value = Range("D1").Value + Cells(ActiveCell.Row, 3).Value '・・・(1)
Case "食費"
Range("D2").Value = Range("D2").Value + Cells(ActiveCell.Row, 3).Value '・・・(2)
End Select
ActiveCell.Offset(1).Activate
Loop
End Sub
他方法ですが、この様な集計ならば
一般機能の ピボットテーブル 或いは巻数で(SUMIFなど)で十分ですよ。
No.4
- 回答日時:
こんなエクセルの処理を繰り返し法でやるより
(1)ピボットテーブル
(2)関数利用
などでやるのがよいと思う。
ーー
同じ繰り返し法でも、下記のやり方をやってみて、よさを勉強して。
質問者のいう「カテゴリ」が表(コードのおもて)に出ないが、存在するだけ集計するよ。
例データ
A列 B列 C列
内科医者1000
弁当食費800
歯医者医者500
おにぎり食費200
靴下衣類500
パンツ衣類1000
会食交際費4000
授業料学費30000
授業料学費40000
弁当食費1000
データの終わりにENDなど入れないものだ。
ーー
標準モジュールに
Sub test01()
d = Range("A65536").End(xlUp).Row
d2 = Range("H65536").End(xlUp).Row
For i = 2 To d
For k = 1 To d2
If Cells(i, "B") = Cells(k, "H") Then
Cells(k, "I") = Cells(k, "I") + Cells(i, "C")
GoTo p1
Else
End If
Next k
d2 = d2 + 1
Cells(d2, "H") = Cells(i, "B")
Cells(d2, "I") = Cells(i, "C")
p1:
Next i
End Sub
ーーー
結果
H列 I列
医者1500
食費2000
衣類1500
交際費4000
学費70000
No.2
- 回答日時:
提示されたコードを修正するのなら、
Sub ボタン1_Click()
Dim mykategori As String
Dim myisyakingaku As Double
Dim mysyokuhikingaku As Double
Dim myrow As Long
myrow = 1
Do Until Range("B" & myrow).Value = "end"
mykategori = Range("B" & myrow).Value
If mykategori = "医者" Then
myisyakingaku = myisyakingaku + Range("C" & myrow).Value
ElseIf mykategori = "食費" Then
mysyokuhikingaku = mysyokuhikingaku + Range("C" & myrow).Value
End If
myrow = myrow + 1
Loop
Range("D1").Value = "医者"
Range("E1").Value = myisyakingaku
Range("D2").Value = "食費"
Range("E2").Value = mysyokuhikingaku
End Sub
こんな感じではないかと。
No.1
- 回答日時:
B列最後の”end”は消して下さい。
結果はE列・F列に出します。
Sub test()
Dim Dic As Object
Dim i As Long
Dim v As Variant
Set Dic = CreateObject("Scripting.Dictionary")
With ActiveSheet
v = .Range(.Range("B1"), .Cells(Rows.Count, 3).End(xlUp)).Value
For i = 1 To UBound(v, 1)
Dic(v(i, 1)) = Dic(v(i, 1)) + v(i, 2)
Next
.Range("E1").Resize(Dic.Count, 1).Value = Application.Transpose(Dic.keys)
.Range("F1").Resize(Dic.Count, 1).Value = Application.Transpose(Dic.items)
End With
Set Dic = Nothing
Erase v
End Sub
ご参考程度に。
コーディングして実行したところ、イメージ通りの結果が得られました。ただ、私がこのようなコーディングをするにはまだまだスキル不足かなと感じました。VBAの本を片手に解析し、理解を深めたいと考えています。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
付き合って数ヶ月の彼女から衝...
-
「食費を千円以内に【納める】...
-
夫婦2人の1ヶ月の食費はどれく...
-
食費が月3000円
-
一か月の食費は1万円です イン...
-
食費 夫婦2人 女子高校生1人 毎...
-
兄の家に居候していて、生活費...
-
ケーキはお小遣いで買うんです...
-
一般的に食費に含めるものと含...
-
友達とルームシェア、でも生活...
-
主婦持ち上げもうやめようよ。
-
大学生の一人暮らしの1か月の生...
-
漫画『きのう何食べた?』につ...
-
大人2人、子供1人、月の食費は1...
-
韓国旅行1週間で買い物を沢山し...
-
6人家族の食費いくら位80歳49歳...
-
家計簿の付け方で迷っています。
-
食費だけで考えてください。 1...
-
一人暮らしで 食費を月13000円...
-
月にみなさん四人家族で食費い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
付き合って数ヶ月の彼女から衝...
-
「食費を千円以内に【納める】...
-
一か月の食費は1万円です イン...
-
年間土曜日40日やすみにしたん...
-
夫婦二人で食費と日用品代合わ...
-
兄の家に居候していて、生活費...
-
4交代制のお仕事をされてる方!...
-
夫婦2人の1ヶ月の食費はどれく...
-
皆さんの1ヶ月の食費を教えて...
-
夫婦の食費 子無し夫婦です。 ...
-
毎月の食費はどれくらいしますか?
-
友達とルームシェア、でも生活...
-
食費の勘定科目(子ども食堂)
-
食費が月3000円
-
結婚2年目の専業主婦です。 今...
-
食費は毎月いくらくらいですか?
-
一人暮らしの男の食費が月に630...
-
金持ちの食費は、1日1万円くら...
-
1ケ月、食費1万円生活って可能...
-
スタジオアリスでの撮影料は家...
おすすめ情報