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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「食費を千円以内に【納める】...
-
食費の勘定科目(子ども食堂)
-
ADHDでお金の計算が全くできず...
-
4人家族で食費が15万円します、...
-
大人5人家族、食費と日用品だけ...
-
2人で食費代、25000円?
-
1ケ月、食費1万円生活って可能...
-
2月29日って必要ですか?明日。...
-
付き合って数ヶ月の彼女から衝...
-
4人家族・食費4万円
-
金持ちの食費は、1日1万円くら...
-
6人家族で食費+洗剤等の消耗品...
-
物価高で食費がとんでもない事...
-
4人家族の一ヶ月の食費(夫の...
-
1人暮らしの食費について 1人...
-
1人暮らしの食費
-
春から一人暮らしを始めるので...
-
食費1ヶ月で8〜10万円使うって...
-
男の一人暮らしで食費2万って高...
-
食費が月3000円
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1ケ月、食費1万円生活って可能...
-
「食費を千円以内に【納める】...
-
家族2~3人分の食費
-
一人暮らしで 食費を月13000円...
-
付き合って数ヶ月の彼女から衝...
-
2月29日って必要ですか?明日。...
-
兄の家に居候していて、生活費...
-
一人暮らしの男の食費が月に630...
-
春から一人暮らしを始めるので...
-
2人で食費代、25000円?
-
夫婦二人で食費と日用品代合わ...
-
金持ちの食費は、1日1万円くら...
-
物価高で食費がとんでもない事...
-
月々の食費について
-
1人暮らしの食費
-
男1女1の1週間自炊したときの食...
-
男1、女1人の1週間の食費ってい...
-
一人暮らしの方へ 毎月食費いく...
-
家族四人(30代男女、3歳、2歳...
-
大人5人家族、食費と日用品だけ...
おすすめ情報