あなたの習慣について教えてください!!

Excel2010です。入力シートがあってコードを入力し配列関数で集計をしています。その入力シートか現金のコードは20番、預金のコードは30番で別シートにマクロで転記しています。条件を20番&30番を一緒に抽出して金銭出納帳を月毎に作成したいのですが、良い方法を教えてください。マクロでも
関数でも構いません。

質問者からの補足コメント

  • すみません宜しくお願いします。

    「複数条件に一致したデータを月別に別シート」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2017/04/22 12:13
  • すみません。マクロも簡単な抽出でシート毎に抽出しているだけです。
    Sub 抽出()
    ' Macro2 Macro
    Sheets("試算表").Range("A3:N5000").AdvancedFilter Action:=xlFilterCopy, _
    criteriarange:=Range("C1:N3"), CopyToRange:=Range("C4:N5000"), Unique:= _
    False
    End Sub
    Sub Aマクロ()
    Sheets("現金出納").Select
    Application.Run "江館H29年.xlsm!抽出"
    Sheets("JAバンク一般").Select

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/04/22 12:41
  • コードの20番と30番は試算表シートの同列F列になります。宜しくお願いします。

      補足日時:2017/04/22 13:23
  • 有難うございます。A2の月を変える様に一つにシートで格納したいです。試算表の20(現金)と30(預金)だけが対象です。試算表のB列はMONTH関数です。画像が貼り付けられないので・・・
    試算表のレイアウトは A B C D E F G H I G K                  月日 項目 借方 勘定科目 金額 項 貸方 勘定科目1 備考1
    4月3日 20 現金 100 1 1 売上
    4月4日 20 現金 100 1 2 事業費
    4月5日 20 現金 100 1 2 事業費
    4月6日 1 1 会議費 20 20 現金
    4月7日 2 1 総務部活動費 20 20 現金
    4月8日 5 1 積立金 20 20 現金
    4月9日 30 普通預金 20 1 2 事業費
    です。

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/04/22 17:05
  • つらい・・・

    早速の回答有難うございます。レイアウトがずれていてすみません。添付のレイアウトで大体あってます。試算表には4月~3月までのデータも入力します。
    金銭出納帳    試算表
    A列の月日 ←  A列の月日
    B列の勘定科目← D列かH列の勘定科目(現金、普通預金の相手勘定)
    C列の入金 ←  E列の金額→20(現金が借方であればC列貸方であればD列)
    列の出金 ←  不明(何を設定すれば良いですか、それとも0円でよいですか)
    E列の残高 ←  入金があれば(こちらは入出金の計算式を入れるので重視しなくても大丈夫です)
    宜しくお願いします。

    No.4の回答に寄せられた補足コメントです。 補足日時:2017/04/22 18:52
  • へこむわー

    こちらこそすみません。
    1)A2の月が対象です。
    2)C列が20又は30であればH列の勘定科目(反対にH列が20又は30であればD列の勘定科目)
    3)4)すみません。E列の金額です。C列に20又は30であれば金銭出納帳の入金の行にH列であれば出金の行にです。ややこしくてすみません。
    5)の残高は設定しなくて大丈夫です。
    6)はい、金銭出納帳の6行目からで大丈夫です。
    説明が下手ですみません、宜しくお願いします。

    No.5の回答に寄せられた補足コメントです。 補足日時:2017/04/22 19:48
  • 有難うございます。早速標準モジュールに貼り付けた所
    For row1 = 2 To maxrow1
    '該当月であること
    If Month(sh1.Cells(row1, "A").Value) = sh2.Cells(2, "A").Value Then ※でエラー「型が一致しません」とでます。

    No.6の回答に寄せられた補足コメントです。 補足日時:2017/04/22 20:37
  • 1)試算表のA列は日付で
    2)金銭出納帳のA2は、数値になってます。
    宜しくお願いします。

    No.7の回答に寄せられた補足コメントです。 補足日時:2017/04/22 21:12
  • tatsu99様ながなが有難うございます。
    すごいです!有難うございました。補足が残り少なくなってしまったので、十分に確認してから
    投稿したいと思います。根気よく教えて下さり有難うございます。感謝です!

    No.8の回答に寄せられた補足コメントです。 補足日時:2017/04/22 21:49
  • HAPPY

    tatsu99様昨日は本当に有難うございました。おかげさまで思い通りにデータが格納できました。
    とてもうれしいです。コードを見て自分で備考欄も移すことが出来ました。ただ試算表のA列が最上行になっていてマクロを実行すると「試算表2行の日付が不正です」のメッセージがでます。試算表は4表めからなのでエラーが出てしまいます。そこで自分で考えて
    maxrow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 'Sheet1 A列最大行
    row1=4
    row2 = 6
    と直したんですがそんな単純ではなかったようですね・・・maxrow1を全部消す?
    どこにどういうコードを入力したら
    row1が4行めからになるのか最後に教えていただきますか?ここまで大満足で本当に感謝しております。とても良い勉強になりました。

      補足日時:2017/04/23 14:55

A 回答 (8件)

日付でエラーがあった場合、エラー表示するようにしました。


以下のマクロと入れ替えてください。
----------------------------
Option Explicit
Public Sub 金銭出納帳作成()
Dim sh1, sh2 As Worksheet
Dim row1, row2, maxrow1 As Long
Dim kamoku1, kamoku2 As Variant
Set sh1 = Worksheets("試算表")
Set sh2 = Worksheets("金銭出納帳")
If IsNumeric(sh2.Cells(2, "A").Value) = False Then
MsgBox ("金銭出納帳A2の値が不正")
MsgBox (sh2.Cells(2, "A").Value)
Exit Sub
End If
maxrow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 'Sheet1 A列最大行
row2 = 6
For row1 = 2 To maxrow1
'該当月であること
If IsDate(sh1.Cells(row1, "A").Value) = False Then
MsgBox ("試算表" & row1 & "行の日付が不正")
MsgBox (sh1.Cells(row1, "A").Text)
Exit Sub
End If
If Month(sh1.Cells(row1, "A").Value) = sh2.Cells(2, "A").Value Then
kamoku1 = sh1.Cells(row1, "C").Value
kamoku2 = sh1.Cells(row1, "G").Value
If kamoku1 = 20 Or kamoku1 = 30 Then '借方が現金又は預金
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "A").Value
sh2.Cells(row2, "B").Value = sh1.Cells(row1, "H").Value
sh2.Cells(row2, "C").Value = sh1.Cells(row1, "E").Value
row2 = row2 + 1
End If
If kamoku2 = 20 Or kamoku2 = 30 Then '貸方が現金又は預金
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "A").Value
sh2.Cells(row2, "B").Value = sh1.Cells(row1, "D").Value
sh2.Cells(row2, "D").Value = sh1.Cells(row1, "E").Value
row2 = row2 + 1
End If
End If
Next
MsgBox ("設定完了")
End Sub
-------------------------------------------
日付で空白のセルはないことが前提です。
この回答への補足あり
    • good
    • 0

1)試算表のA列は日付でセルの書式設定がm"月"d"日"の前提です。


違っていればコメントください。
2)金銭出納帳のA2は数値が前提です。
それともA2は日付で、セルの書式設定で月のみを表示するようにしていますか。(書式設定でmを設定)
どちらでしょうか。
この回答への補足あり
    • good
    • 0

以下のマクロを標準モジュールに登録してください。


----------------------------------------
Option Explicit
Public Sub 金銭出納帳作成()
Dim sh1, sh2 As Worksheet
Dim row1, row2, maxrow1 As Long
Dim kamoku1, kamoku2 As Variant
Set sh1 = Worksheets("試算表")
Set sh2 = Worksheets("金銭出納帳")

maxrow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 'Sheet1 A列最大行
row2 = 6
For row1 = 2 To maxrow1
'該当月であること
If Month(sh1.Cells(row1, "A").Value) = sh2.Cells(2, "A").Value Then
kamoku1 = sh1.Cells(row1, "C").Value
kamoku2 = sh1.Cells(row1, "G").Value
If kamoku1 = 20 Or kamoku1 = 30 Then '借方が現金又は預金
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "A").Value
sh2.Cells(row2, "B").Value = sh1.Cells(row1, "H").Value
sh2.Cells(row2, "C").Value = sh1.Cells(row1, "E").Value
row2 = row2 + 1
End If
If kamoku2 = 20 Or kamoku2 = 30 Then '貸方が現金又は預金
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "A").Value
sh2.Cells(row2, "B").Value = sh1.Cells(row1, "D").Value
sh2.Cells(row2, "D").Value = sh1.Cells(row1, "E").Value
row2 = row2 + 1
End If
End If
Next
MsgBox ("設定完了")
End Sub
-------------------------------------------------
まだ、齟齬があるかもしれません。その場合は、補足してください。(備考欄は設定していません)
この回答への補足あり
    • good
    • 0

すみません。


再確認にさせてください。
1)日付は月が金銭出納帳のA2に一致する日付が対象となる。
2)勘定科目はC列が20又は30、G列が20又は30の科目が対象となる。
3)C列の入金
「現金が借方であればC列、貸方であればD列」ということですが、C列は、金額ではなく勘定科目のコードようにみえます。
D列は、勘定科目の文字です。そのようなものをC列の金額欄に設定する意味が不明です。
4)D列の出金
設定しませんが、よいですか。(前回の回答がありませんでした)
5)E列の残高
設定しませんが、よいですか。
6)金銭出納帳の6行目から設定しますが良いですか。(前回の回答がありませんでした)
この回答への補足あり
    • good
    • 0

No3です。


補足ありがとうございました。
1)試算表のレイアウトは添付の図であってますか。
2)金銭出納帳が4月の場合、試算表の日付は4月分のみの日付だけであるという前提で良いですか。
その場合、日付は無視して、20又は30のみをピックアップします。
それとも、試算表には、4月以外の月のデータもありますか。その場合は、4月のデータのみピックアップします。
3)試算表のC列(借方)が20又は30のみが抽出対象で良いですか。
4)設定項目は以下の内容であってますか。(不明点もあるので教えてください)
金銭出納帳    試算表
A列の月日 ←  A列の月日
B列の勘定科目← D列の勘定科目
C列の入金 ←  E列の金額
D列の出金 ←  不明(何を設定すれば良いですか、それとも0円でよいですか)
E列の残高 ←  入金があれば、前の行の残高に入金の金額を加算
        出金があれば、前の行の残高から出金の金額を減算
F列の備考 ←  I列の備考1
5)金銭出納帳の設定は6行目より行います(5行目までは設定されているものとします)が、
それでよろしいですか。
6)素朴な疑問ですが、20(現金)と30(普通預金)のみを金銭出納帳へまとめると、
勘定科目は、現金と普通預金のみが表示されるはずです。
添付された画像には、それ以外の科目も表示されていますが、それは無視して良いでしょうか。
「複数条件に一致したデータを月別に別シート」の回答画像4
この回答への補足あり
    • good
    • 0

No2です。

補足ありがとうございました。
更に、補足をお願いします。
1)試算表シートのレイアウトもご提示ください。
2)試算表シートのF列が20又は30のものが、抽出対象でOKですか?
3)金銭出納帳を月別に作成したいとのことですが、提示されたシートは”金銭出納帳”の1枚です。
これが、4月分であることは、わかりますが、他の月(5,6,7月等・・・)は、同じシートに格納するのですか。
それとも、他のシートに格納するのですか。
月とシートの関係も明瞭にしてください。
この回答への補足あり
    • good
    • 0

各シート名と


各セルの配置が判るものを添付のような画像で提示してください。
「複数条件に一致したデータを月別に別シート」の回答画像2
この回答への補足あり
    • good
    • 0

>>件を20番&30番を一緒に抽出して金銭出納帳を月毎に作成したいのですが、良い方法を教えてください。



マクロでいろいろ処理されているなら、今やりたいことを処理するマクロを質問者さんが作ればいい。
マクロでいまいちできない部分があるなら、生成されたVBAプログラムを質問さんが手直しすればいいですね。
この回答への補足あり
    • good
    • 0

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


おすすめ情報