• ベストアンサー

マクロについて

マクロ初心者です。 下記の操作をマクロで行いたいのですがうまくいかないのでどうすればうまくマクロが作動するのか教えて頂ければと思います。4の操作までは正しく作動しましたが5以降に困っています。。。 どなたかお願いしますmm (1) A列にフィルターをかけて[??????}を含むものを選択 (2). 1に.該当するもB列のDataを値のみ数値と値のClear (3) 2の後に再びA列で[??????]を含まないものを選択 (4)  3に該当するA列のDataを数値と値のClear (5)  4の操作で空白となったセルに=上のセルという計算式の指示を出す (6) すべて値貼り付けをし、空白のセルを削除する ※Dataの行数は毎回作業時に変更があります。 ※Dataは数値だけではなく文字列も含んでいます 失敗したマクロ--------------------------------------------- Range("A2").Select Selection.AutoFilter Field:=1, Criteria1:="=*[??????]*", Operator:=xlAnd Columns("B:B").Select Selection.ClearContents Selection.AutoFilter Field:=1, Criteria1:="<>*[??????]*", Operator:=xlAnd Columns("A:A").Select Selection.ClearContents For i = 3 To [A65536].End(xlUp).Row If Cells(i, "A") = "" Then Cells(i - 1, "A").Copy Cells(i, "A") Next i End Sub -----------------------------------------------------------

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

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

Dim WorkRange As Range Set WorkRange = Range(Cells(1, 1), _ Range(ActiveSheet.Cells(65536, 1), _ ActiveSheet.Cells(65536, 1)).End(xlUp)) Range("A2").Select Selection.AutoFilter Field:=1, Criteria1:="=*[??????]*", Operator:=xlAnd Columns("B:B").Select Selection.ClearContents Selection.AutoFilter Field:=1, Criteria1:="<>*[??????]*", Operator:=xlAnd Columns("A:A").Select Selection.ClearContents Selection.AutoFilter For i = 3 To WorkRange.Rows.Count If WorkRange.Cells(i, "A") = "" Then WorkRange.Cells(i - 1, "A").Copy WorkRange.Cells(i, "A") Next i Set WorkRange = Nothing こんな感じでしょうか? 提示されたマクロでは、 一番下に[?????]を含むセルがない場合に、 最後まで処理が行われないという問題と、 オートフィルターを解除していないため、 処理対象がないと判断される問題があります。 がんばってください。

teddyr
質問者

お礼

AKARI0418さん、 お礼が遅くなってしまいましたがありがとうございました。 教えていただいた方法でうまくいきました。

関連するQ&A

専門家に質問してみよう