アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございます。

とてもわかりやすいですね。
感謝。
実行したら、デバックしました。

lastline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得

どうしてでしょか?私なりに問題は無いように見えますが・・・・

お礼日時:2009/11/18 14:01

lastline = ws.Cells(Rows.Count, 1).End(xlUp).Row '作業3の最終行を取得



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

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

でも、目から鱗 でした。

ありがとうございます。

お礼日時:2009/11/18 16:22

>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列にあるのでしょうね(確認)。
    • good
    • 0
この回答へのお礼

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

ご指摘ありがとうございます。

お礼日時:2009/11/18 16:25

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