英数コードによる分類とコピー

 

を押して作動するプログラムを作ります。

Sub 家計簿入力2()

Dim n As Integer

For n = 6 To 200 Step 1

If Cells(n, 3) = "s1" Then

Cells(n, 4).Copy Cells(n, 6)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "s2" Then

Cells(n, 4).Copy Cells(n, 7)

Cells(n, 23) = "ok"

End If


If Cells(n, 3) = "s3" Then

Cells(n, 4).Copy Cells(n, 8)

Cells(n, 23) = "ok"

End If

 

If Cells(n, 3) = "g" Then

Cells(n, 4).Copy Cells(n, 9)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "z1" Then

Cells(n, 4).Copy Cells(n, 10)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "z3" Then

Cells(n, 4).Copy Cells(n, 11)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "sa" Then

Cells(n, 4).Copy Cells(n, 12)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "ke" Then

Cells(n, 4).Copy Cells(n, 13)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "ko" Then

Cells(n, 4).Copy Cells(n, 14)

Cells(n, 23) = "ok"

End If

 

If Cells(n, 3) = "i" Then

Cells(n, 4).Copy Cells(n, 15)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "hu" Then

Cells(n, 4).Copy Cells(n, 16)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "k" Then

Cells(n, 4).Copy Cells(n, 17)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "b" Then

Cells(n, 4).Copy Cells(n, 18)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "h" Then

Cells(n, 4).Copy Cells(n, 19)

Cells(n, 23) = "ok"

End If

If Cells(n, 3) = "so" Then

Cells(n, 4).Copy Cells(n, 20)

Cells(n, 23) = "ok"

End If

Next

End Sub

 

プログラムはここまで。


Dim n As Integer というのは、変数”n”がどういうデータなのかを宣言しているのですが

たとえば、Integerというのは整数値という意味で、ほかにも、文字の場合はCharとか、

長い整数値の場合はLongとかいろいろあります。

エクセルのvbaは賢いので、この行を省いてもちゃんと動作してくれるようで、

分からない場合は、省いてもいいかも。(こんなこと言うと、プロの方には怒られるかもだけど)

 

For n = 6 To 200 Step 1

は、nが6行目から200行目になるまで、for~Nextに含まれる、プログラムを繰り返します。

という意味で、

”step 1”は、6の次は7、その次は8と、1ずつプラスされていきます。

(”step 2”の場合は、6の次は8、その次は10といった具合に2ずつプラスされていきます)

 

次に

If Cells(n, 3) = "s1" Then

Cells(n, 4).Copy Cells(n, 6)

Cells(n, 23) = "ok"

End If

の部分は、英数コードに従って、入力された金額を指定の列にコピーするプログラムで

たとえば、上記の場合、英数コードが”s1”の場合は、金額データを同じ行の6列めにコピー

するように命令しています。

↓クリックで拡大

↑のように、項目欄で記入する英数コードは、金額データを転記する部分の項目名のところに書いてあるので、これを

参照すれば分かるようになっています。(使ってる内に覚えてしまいます)

私の場合は、無駄遣いの金額を把握したいので、食費の中でも必要なものを”s1”(syokuhiの1番め)、

明らかに無駄遣いというものは、”s3”に分類しています。(分類することによって無駄遣いの合計金額を把握することが

できます)

その他は雑貨の”z1”、”z3”とか、化粧品は”ke”とか、医療費は”i”とか、自分が分類したいと思うコード

を作って、それぞれに列を割り当てています。

 

1つの英数コードに対応するプログラムが、前述の、If~End If までのプログラムです。

英数コードが”s1”の場合、”s2”の場合、”z1”の場合・・・、といった具合に、

全部で、15個分の If~End If が羅列されています。

もちろん、配列だとかfind関数だとかを使えば、もっと簡潔なプログラムも組めそうですが、

とりあえず問題なし♪です。

 

家計簿を使っていくうちに、新しい項目を追加したい、とか

この項目は要らない、という場合には、ここを修正してやれば、うまくいきます。

(あと、対応している月ごとのシートの項目欄も修正してやる必要があります。)

 

また、

For n = 6 To 200 Step 1

なので、一度に200行目までしか、転記できません。

また、転記する該当セル欄は、入力する段階で”項目”欄に入れた英数コードで判別するように

なっています。

なので、必ず

If Cells(n, 3) = "s1" Then

の部分の、” ”欄の中身と合致するように(全角、半角含めて)、英数コードを入力するようにしてください。

 


inserted by FC2 system