• ベストアンサー

Excel VBAでオートフィルタ後の結果を置換する方法

こんばんは、フィルタを使うべきか、(検索で2つの条件は設定できないし・・・)悩んでいます。 オートフィルタで、2つの項目に対して、条件を設定し表を絞り込んだのですが、その結果に対して、例えば こもも ピンク こもも ピンク こもも ピンク こもも ピンク などと抽出が出来たとします。この結果の「こもも」を「ピーチ小」に置き換えたいのですが、どのような手順でマクロを組めばよいのでしょうか。 VBAが少しずつ判りかけてきたのですが、難しい記述は良くわかりません。 できればたくさんコメントを頂くと助かります。 宜しくお願い致します。

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

  • ベストアンサー
  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.1

可視セル(見えているセル)に対して置換すればよいかと。 [Rangeオブジェクト].SpecialCells(xlCellTypeVisible) 以上の記述で指定範囲の中で、見えている範囲を取得できます。 セル全体に対して置換を行う場合はこんな感じで Cells.SpecialCells(xlCellTypeVisible).Replace What:="こもも", Replacement:="ピーチ小", LookAt:=xlWhole

mugigohan
質問者

お礼

可視セルに対して置換する方法。 無事活用することが出来ました。 本でなかなかみつけられず悩んでいました。 応用がなかなかできない今日この頃です。 今回の事で、VBAの奥深さを感じました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル・マクロ オートフィルタからコピー

    Excel2000使用中です。 縦にたくさん項目が並んでいる表にオートフィルタを行い特定の項目のみを抽出し、抽出した項目のみを他の表にコピペをするという作業をマクロで行ないたいです。 ただし抽出した項目数は50~75項目で日によって変わりますが、抽出先の表は75項目で、75に足りない部分は空白です(空白は必須です)。 始めはオートフィルタをかけた後で上から75行コピーして貼り付けをしてマクロ設定してみたのですが、うまくいきません。 このように日々変化する項目があってもマクロを設定する方法はありますか?

  • オートフィルタオプションをVBAで指定したい

    表中に、このような列があるとします。 肩ロース100g 肩ロース500g ヒレ100g ヒレ250g ヒレ500g レバー100g レバー250g 他の列には注文日や個数、小計金額があるとします。 オートフィルタをかけて、フィルタオプションで「○○で始まる」を指定し、例えばレバーの行のみを手作業で抽出することはできます。 この動作を、フィルタオプションでの設定を経由せずに行えないものでしょうか? たとえば、別の列などに「肩ロース」「ヒレ」「レバー」が記載されていて、そのデータを元にオートフィルタの▼をクリックすると「肩ロース」「ヒレ」のように抽出条件データが表示される、というふうには出来ないものでしょうか? VBA等を使用しても構いません。 抽出項目は固定ですので、コード中に記述しても構いません。 動作が要望を満たせば、オートフィルタを使用しなくても構いません。 フォームウィンドウで抽出項目を指定し、その項目をCriteria等に設定してフィルタオプションでも構いません(この方法は自力で出来そうですが)。 良い方法があれば、お教え下さい。

  • エクセルVBAでの複数条件でオートフィルタをする方法

    VBA初心者です。 例えば、シートに A  B 1 桃  100 2 柿  150 3 葡萄 400 というデータが書いてあって、ある時は「桃or柿」、またある時は「柿」だけ、「柿or葡萄」というようにVBAでオートフィルタをかけてデータを抽出したいと思っています。 その条件は、別にリストボックスが用意されていて、ユーザが選択した項目に該当するデータだけを取得したいのですが・・・ 不特定数の複数項目をオートフィルタの「or」条件で結ぶ事が出来ずに困っています。それともオートフィルタでは無理なのでしょうか? (知識が乏しくてすみません) どなたか良い解決策、または別策がありましたらご教授下さい。

  • エクセルVBA オートフィルタについて

    オートフィルタは2つまでしか条件が設定できません。 3つ以上設定する方法はないでしょうか?(OR条件です) オートフィルタの引数(Criteria)は2つしかありませんから、恐らく3つ以上の設定はできないと思っています。 そこで、オートフィルタを複数回設定し、使っていない列に特定の文字(例えば○など)を入れ、最後にこの○を条件にすることにより、実質的に3つ以上条件のフィルタリングを実現させたいと考えております。 そこでお聞きしたいのは、各条件でフィルタリングした時に、任意の列に○を入れる方法です。 例えば myRng.AutoFilter Field:=4, Criteria1:="=?UA*" でフィルタリングしたエリアの特定の列に○を入れるにはどのようなVBAになるのでしょうか? オートフィルタを使わず、ループで全行の条件を聞いて、○をつけることは可能ですが、行数が非常に多いので時間がかかってしまいます。 オートフィルタを使えばすばやく該当行が選択されますので、何とかこれを利用したいと思っています。何か良い方法は無いでしょうか? よろしくお願いします。

  • エクセルのシート上でオートフィルターを使った際に関する、VBA上でのコードの記述について

    大変稚拙な質問の仕方をお許しください。 エクセルのシート上で、オートフィルターを使ってデータを抽出した前提で、VBAを使ってある作業をするためのマクロを組もうと思ったのですが、抽出されて表示された一番最初データの行を確定させるコードの記述が思い浮かびません。なにかいい方法はないでしょうか?よろしくお願いします。

  • オートフィルタ使用時のマクロによるセルの移動

    オートフィルタによって抽出した結果、表示されている行の内容を順々に参照していきたいのですが、 どうすればよいのでしょうか? 簡単なことのような気がするのですが・・・。 ActiveCell.Offset(1, 0).Select とすると、フィルタによって非表示になっている行にも移動してしまいます。 フィルタによって抽出する項目は複数の列を使用するので、マクロでは抽出条件を設定しません。 以上、お願いしまーす。

  • エクセルのオートフィルタ機能について

    エクセルのオートフィルタ機能について エクセルのオートフィルタで、オプション機能を使えばそのセルの一部の文字(例「田中太郎、田中次郎」がセルの項目のとき、抽出条件を「田中」+「含む」とする)を含む全てのセルを抽出できますが、オプション機能を使わずに、最初からオートフィルタのリストとしてセルの項目の一部分(例の「田中」)を設定しておくことは可能でしょうか?

  • Excel VBAのオートフィルタ解除について

    こんばんわ。 現在、コマンドボタン(オートフィルタの設定)にオートフィルタを設定するようなマクロを登録しています。 そして、別のコマンドボタンにはオートフィルタの解除を実施するマクロを書きたいんです。 しかし、オートフィルタを設定していない時に、解除のマクロを実行するとエラーになってしまいます。どうしたら良いのでしょうか? If・・・文を使って、対象セルにオートフィルタが設定している時は解除を実施し、オートフィルタが設定されてない時は、何も実施しない。 このようなマクロはどうしたら良いのでしょうか? よろしくお願いします。

  • エクセルVBAでオートフィルターの認識について

    エクセルマクロでオートフィルターを設定したり解除したりしたいのですが、オートフィルターが設定されているか、又は、設定されていないかをマクロで認識出来ないのでしょうか?

  • エクセルのオートフィルタについて

    今、エクセルを使っているのですが、 リストの抽出で、オートフィルタを使っています。 それで、あるフィールドAでまず条件を一つ抽出し、 次にフィールドBで条件を抽出するのと、 フィールドBで条件を抽出してから、 フィールドAで条件を抽出するのとでは、 結果は同じでなのですか?