Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


573 / 13645 ツリー ←次へ | 前へ→

【79621】VBAで、複数の条件を出力させたい amatsuno 18/2/16(金) 13:37 質問[未読]
【79622】Re:VBAで、複数の条件を出力させたい amatsuno 18/2/16(金) 16:50 発言[未読]
【79623】Re:VBAで、複数の条件を出力させたい γ 18/2/16(金) 21:16 発言[未読]

【79621】VBAで、複数の条件を出力させたい
質問  amatsuno  - 18/2/16(金) 13:37 -

引用なし
パスワード
   VBAのコードで、複数のセルの入力条件を持つレコードを出力させたいと思っています

以下のcsvを読み込み、

指定条件のレコードを別セルに抽出したいと思っています

抽出条件は以下の通りです。
(以下1.2.を両方同時に出力します)

・文字列「COL-3がFALSE」のものは抽出する
・文字列「COL-3がTRUE」、かつ「COL-4が2018/1/1〜2018/2/1」のものは抽出する」


具体的には、
以下のCSVより、
NAME1
NAME2
NAME3
NAME6
を出したいと思っています。

ORG.csv
COL-1,COL-2,COL-3,COL-4
NAME1,11,FALSE,
NAME2,22,FALSE,2017/12/1
NAME3,33,FALSE,2018/1/29
NAME4,44,TRUE,
NAME5,55,TRUE,2017/12/1
NAME6,66,TRUE,2018/1/29

csvなので、各カラムは文字列です

COL-4の出力条件については、

DATE_ST = InputBox("抽出開始日") ←2018/1/1を入れます
DATE_ED = InputBox("抽出終了日") ←2018/2/1を入れます

で取得しております


Dim i, reccount As Long
reccount= Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To reccount
If Cells(i, 3) = False Then
Rows(i).Copy newshhets.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next i

とFALSE条件側(1.)のみは書いたのですが、
TRUE側の条件(2.)を追加して記載する場合、どのように記載すればよいのでしょうか?
(COL-3が「TRUE」で、期間が「DATE_ST〜DATE_ED」です)

お分かりになられる方、申し訳ございませんが、よろしくお願いいたします

【79622】Re:VBAで、複数の条件を出力させたい
発言  amatsuno  - 18/2/16(金) 16:50 -

引用なし
パスワード
   すいません。

自己解決しました。

手順は以下で対応しました

1.COL-3がFALSEのみを抽出する
(ここで、NAME1〜3が抽出される)

2.COL-4が2018/1/1〜2018/2/1のみを抽出する
(ここで、NAME3・NAME6が抽出される)

3.重複削除を行う
(ここで、NAME3が消える)

【79623】Re:VBAで、複数の条件を出力させたい
発言  γ  - 18/2/16(金) 21:16 -

引用なし
パスワード
   解決されたようですが、こんな方法が普通かもしれませんね。

  For i = 1 To reccount
    If Cells(i, 3).Value = False Or _
      (Cells(i, 3).Value = True _
       And Cells(i, 4).Value >= DATE_ST _
       And Cells(i, 4).Value <= DATE_ED) Then
      Rows(i).Copy newsheets.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    End If
  Next i
(Cells(i, 3).Valueは False か True のいずれかと限定できないものとしました)


なお、
Dim i, reccount As Long
は不可です( i は Variant型です)。
Dim i As Long, reccount As Long
とします。

573 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free