• ベストアンサー

エクセル 条件に合うものだけ抽出したいのです

お願いします。 ゆうちょ からの引落しデータを精査するエクセルを作らなくなり 困ってます。条件に合うものだけ抽出したいのです 引落しデータは 口座・得意先NO・得意先氏名・金額・結果 の項目があります。 精査は「結果」を調べます。 「結果」の内容は  0=振替え済み 1=残高不足 2口座なし 3預金取り消し 4=契約なし 7=照会事故 8事業主取消し 9その他 です。 数字のみが入力されてます。 抽出したい「結果」の数字は 0 1 4 のみです。 マクロでどう記述しれば良いのでしょうか? エクセルシートは作業3にデータがあり抽出したデータを 作業4に書き出ししたいのです。 よろしくお願いします。

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

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

Sub 抽出() Dim i As Long Dim j As Long Dim ws1 As Worksheet Dim ws2 As Worksheet Dim lastline As Long Set ws1 = Worksheets("作業3") '作業3をws1とする Set ws2 = Worksheets("作業4") '作業4をws2とする lastline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得 '両方のシートとも1行目は見出しが入っていると仮定2行目から処理 j = 1 For i = 2 To lastline   Select Case Cells(i, 5) '5列目 結果を調べる     Case 0, 1, 4     '0,1,4だったら       j = j + 1     '作業4に転記する行を1増やす       With ws1         .Range(.Cells(i, 1), .Cells(i, 5)).Copy ws2.Cells(j, 1) '1列目から5列目をCopy       End With   End Select Next End Sub

K-19
質問者

お礼

ありがとうございます。 とてもわかりやすいですね。 感謝。 実行したら、デバックしました。 lastline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得 どうしてでしょか?私なりに問題は無いように見えますが・・・・

その他の回答 (2)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.3

lastline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得 を lastline = ws1.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得 に変更してください。 前提として 対象はAからEまでの5列、A列のデータが入っている最後の列まで

K-19
質問者

お礼

ありがとうございます。 「物」を知らずにご面倒をおかけしました。 また、もっと質問の内容を詳しく書くように今後いたします。 でも、目から鱗 でした。 ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>lastline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得 どうしてでしょか?私なりに問題は無いように見えますが・・・・ 回答者の回答では wsは ws1 になってます。SET部分を質問者が改めて、変えなければ、ws1 では? 質問でシート名や列名らしいものの名前を,質問にはっきり書いてください。 >精査は「結果」を調べます 結果という項目名の列と思うが、列番号で言えば、A,B,Cなど何ですか。 >作業3 「作業3」というシート名のシート 「作業4」というシート名のシート >、デバックしました。 普通はエラーが出ました、と書く。 具体的にどんなエラーメッセージが出たか書くものです。 === l>astline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得・・ 結果はA列にあるのでしょうね(確認)。

K-19
質問者

お礼

今後、わかりやすく記するようにいたします。 慌てていたとはいえ、恥ずかしいですね。 ご指摘ありがとうございます。

関連するQ&A

専門家に質問してみよう