- ベストアンサー
エクセル 条件に合うものだけ抽出したいのです
お願いします。 ゆうちょ からの引落しデータを精査するエクセルを作らなくなり 困ってます。条件に合うものだけ抽出したいのです 引落しデータは 口座・得意先NO・得意先氏名・金額・結果 の項目があります。 精査は「結果」を調べます。 「結果」の内容は 0=振替え済み 1=残高不足 2口座なし 3預金取り消し 4=契約なし 7=照会事故 8事業主取消し 9その他 です。 数字のみが入力されてます。 抽出したい「結果」の数字は 0 1 4 のみです。 マクロでどう記述しれば良いのでしょうか? エクセルシートは作業3にデータがあり抽出したデータを 作業4に書き出ししたいのです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (2)
- rivoisu
- ベストアンサー率36% (97/264)
lastline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得 を lastline = ws1.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得 に変更してください。 前提として 対象はAからEまでの5列、A列のデータが入っている最後の列まで
お礼
ありがとうございます。 「物」を知らずにご面倒をおかけしました。 また、もっと質問の内容を詳しく書くように今後いたします。 でも、目から鱗 でした。 ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
>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列にあるのでしょうね(確認)。
お礼
今後、わかりやすく記するようにいたします。 慌てていたとはいえ、恥ずかしいですね。 ご指摘ありがとうございます。
お礼
ありがとうございます。 とてもわかりやすいですね。 感謝。 実行したら、デバックしました。 lastline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得 どうしてでしょか?私なりに問題は無いように見えますが・・・・