電子書籍の厳選無料作品が豊富!

以前、別シートから検索値に一致したデータを別シートに抽出するという記述を教えて頂きました。
tatsu99様には大変お世話になりました。

Public Sub 金銭出納帳作成()
Dim sh1, sh2 As Worksheet
Dim row1, row2, maxrow1 As Long
Dim kamoku1, kamoku2, kamoku3 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, "C").End(xlUp).Row 'Sheet1 C列最大行
row2 = 6
For row1 = 4 To maxrow1
'該当月であること
If IsDate(sh1.Cells(row1, "C").Value) = False Then
MsgBox ("試算表" & row1 & "行の日付が不正")
MsgBox (sh1.Cells(row1, "C").Text)
Exit Sub
End If
If Month(sh1.Cells(row1, "C").Value) = sh2.Cells(2, "A").Value Then
kamoku1 = sh1.Cells(row1, "E").Value
kamoku2 = sh1.Cells(row1, "I").Value
kamoku3 = sh1.Cells(row1, "M").Value
If kamoku1 = 20 Or kamoku1 = 21 Then '借方が現金又は預金
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "C").Value
sh2.Cells(row2, "B").Value = sh1.Cells(row1, "K").Value
sh2.Cells(row2, "C").Value = sh1.Cells(row1, "G").Value
sh2.Cells(row2, "F").Value = sh1.Cells(row1, "M").Value
row2 = row2 + 1
End If
If kamoku2 = 20 Or kamoku2 = 21 Then '貸方が現金又は預金
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "C").Value
sh2.Cells(row2, "B").Value = sh1.Cells(row1, "F").Value
sh2.Cells(row2, "D").Value = sh1.Cells(row1, "G").Value
sh2.Cells(row2, "F").Value = sh1.Cells(row1, "M").Value
row2 = row2 + 1
End If
End If
Next
MsgBox ("設定完了")
End Sub

大変助かって使用させて頂いています。が、もう少し教えて頂きたく質問させて下さい。
kamoku1が20 kamoku2が21 あるいは、kamoku1が21 kamoku2が20の様に
借方が現金(預金)、貸方が預金(現金)の場合(預金から現金を引き出す場合)には、表示しない様に記述を教えて頂きますか。お願いします。

A 回答 (1件)

前回回答した環境と異なっているので、こちらで動作確認はしていませんが、


以下のように修正(追加のみ)して下さい。
追加個所は追加①~追加④です。(以外は修正不要です)
---------------------------------------
If Month(sh1.Cells(row1, "C").Value) = sh2.Cells(2, "A").Value Then
kamoku1 = sh1.Cells(row1, "E").Value
kamoku2 = sh1.Cells(row1, "I").Value
kamoku3 = sh1.Cells(row1, "M").Value
If kamoku1 = 20 Or kamoku1 = 21 Then '借方が現金又は預金
If kamoku2 <> 20 And kamoku2 <> 21 Then '追加①
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "C").Value
sh2.Cells(row2, "B").Value = sh1.Cells(row1, "K").Value
sh2.Cells(row2, "C").Value = sh1.Cells(row1, "G").Value
sh2.Cells(row2, "F").Value = sh1.Cells(row1, "M").Value
row2 = row2 + 1
End If '追加②
End If
If kamoku2 = 20 Or kamoku2 = 21 Then '貸方が現金又は預金
If kamoku1 <> 20 And kamoku1 <> 21 Then '追加③
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "C").Value
sh2.Cells(row2, "B").Value = sh1.Cells(row1, "F").Value
sh2.Cells(row2, "D").Value = sh1.Cells(row1, "G").Value
sh2.Cells(row2, "F").Value = sh1.Cells(row1, "M").Value
row2 = row2 + 1
End If '追加④
End If
End If
    • good
    • 0
この回答へのお礼

早速のアンサー有難うございました。
思った通りに表示されました。Andと<>を使うではないかと思ってましたが・・
そういう事ですね。本当に有難うございました。

お礼日時:2017/10/13 18:35

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