[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラー値の処理 マクロ』(ぷりん)
表題の件、教えてください。
<元データ> 項目名は1行目のA列から始まるものとする。
コード Yes/No 分類 件数 a Yes no 20 b No 1 1 c Yes 2 #VALUE! d Yes 2 3 a Yes 3 2 f No 3 3 a Yes #N/A 20 a Yes 3 20
上記元データで、B列がYesでC列の分類がno以外で、D列の件数が3件以上の場合、E列-H列の同じ行にデータをそのまま転記したいです。
#N/Aと#VALUEは数式ではなく、値に変換したものとなっています(本番では他のファイルに転記したいので、数式を全て値化してから転記する仕様にしているため)
まずループでIF文で条件を組んだら、エラー値があるからか「型が一致しません」と出ました。
そこで、On Error Resume Next 〜 処理 〜 On Error GoTo 0
を入れてみたところ、今度は止まらずに動いたのですが、#N/Aと#VALUEの行も転記されてしまいました。
「no」でもなく、「3件以上」にも該当しないはずなのに、なぜエラー値行も貼りついてしまうのかが不明です。
考えたコード ←エラー行も貼りついてしまう版
Sub test()
Dim l As Long
For l = 2 To 9 On Error Resume Next If Cells(l, "B").Value = "Yes" And Cells(l, "C").Value <> "no" And Cells(l, "D").Value >= 3 Then Cells(l, "A").Resize(, 4).Copy Cells(l, "E") End If Next On Error GoTo 0 End Sub
アドバイス頂けますと幸いです。
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
こうですか? Sub test() Dim l As Long For l = 2 To 9 If Not (IsError(Cells(l, "C").Value) Or IsError(Cells(l, "D").Value)) Then If Cells(l, "B").Value = "Yes" And Cells(l, "C").Value <> "no" And Cells(l, "D").Value >= 3 Then Cells(l, "A").Resize(, 4).Copy Cells(l, "E") End If End If Next End Sub (xyz) 2023/09/11(月) 23:36:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.