こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Excel VBA】データの比較

Excel2003を使用しています。

職場のシステムに入力した仕訳をCSVデータで出力→マクロで処理したデータを集計し、科目ごとの金額確認用として使用しています。

このCSVデータは伝票番号順に上から表示されていますが、借方と貸方が混在していて、金額も借方と貸方で2列で表示されていたので、一旦、借方データと貸方データに分けて(それぞれシートを用意して該当する必要データをコピペ)借方データの伝票番号&伝票行番号が貸方データの伝票番号&伝票行番号と一致したら、同行に表示するようにしました。

ただ、借方データを基準に比較しているため、借方の行数が貸方の行数より少ない仕訳の場合は貸方のデータが表示されません。私はこのケース(借方行数<貸方行数)の仕訳はありませんが、よその支店で月に2回ほどあるようで、これを解消できないか尋ねられています。

下記は、ある飲食店へ代金\15,000振込、振込手数料\420は差し引く(飲食店持ち)という場合の仕訳だそうです。
交際費15,000/普通預金14,580
         /雑費     420
私自身、この仕訳にちょっと違和感を感じるのですが、この場合だと、貸方の雑費\420が表示されません。
何か良い解決方法があれば、教えていただきたくよろしくお願いします。

投稿日時 - 2013-06-27 11:01:38

QNo.8151855

困ってます

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

昼休みにちょこっとやってみました。

A1~D8にある表を、E1~G10に番号別に出力したいと言う場合の
プログラムです。ちゃんとやってるヒマが無かったので、このまま
だとうまく終了しませんが、その辺は適当に直してください。

とりあえず、番号は必ず昇順になってるという前提です。

Sub Macro1()
i1 = 1: i2 = 1: i3 = 1
Do
c1 = Range("A" & CStr(i1)).Value
c2 = Range("C" & CStr(i2)).Value
D1 = Range("B" & CStr(i1)).Value
D2 = Range("D" & CStr(i2)).Value
Select Case c1 - c2
Case 0
Range("E" & CStr(i3)).Value = c1
Range("F" & CStr(i3)).Value = D1
Range("G" & CStr(i3)).Value = D2
i3 = i3 + 1
i2 = i2 + 1
i1 = i1 + 1
Case Is > 0
Range("E" & CStr(i3)).Value = c2
Range("G" & CStr(i3)).Value = D2
i3 = i3 + 1
i2 = i2 + 1
Case Is < 0
Range("E" & CStr(i3)).Value = c1
Range("F" & CStr(i3)).Value = D1
i3 = i3 + 1
i1 = i1 + 1
End Select
Loop
End Sub

要は、貸方用、借方用、出力用とカウンターが3つ必要だという
ことです。

投稿日時 - 2013-06-27 12:45:35

お礼

お忙しい中、一例を示していただき、ありがとうございます。
勉強になります。

今回は当初の処理が済んだ後に、貸方のみの行データがあれば抽出し、処理済みのデータに続けて転記後、日付順に並べ替えるという方法で、どうにか解消できました。

投稿日時 - 2013-06-28 11:35:10

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

いや、だから「伝票番号が一致したデータの中での、借り方側の
行数をカウントしているか」という話です。

私がよくやるのは、「貸方側科目名&借り方側科目名」というデータを
作って、この長さがゼロになるまでループを回す、って方法ですが。

投稿日時 - 2013-06-27 12:05:00

ANo.1

コードがないと何とも言えませんが、単純に「仕分けるときに
貸方、借方の最大行数をチェックする」ロジックを入れれば
済む話では?

つか、こういう処理をするとき、初めから「先頭列だけでコント
ロールする」ような処理をする方が問題だと思いますけど。

投稿日時 - 2013-06-27 11:11:45

補足

書き込みありがとうございます。

質問文が分かりづらかったようで、申し訳ありません。
借方と貸方の最大行数(これはループ時に取得しています)ではなく、“各仕訳の中での”借方の行数と貸方の行数で、借方の行数が少ない場合の質問です。

データの比較は、質問文にも書かせていただいていますが、仕訳伝票の“伝票番号と伝票行番号が一致する”という条件で比較しているので、先頭列だけでコントロールするような処理はしていません…。

投稿日時 - 2013-06-27 11:40:27

あなたにオススメの質問