またまたお世話になります><
オートフィルタ後、可視セルの特定列のみを処理したいです。
自作のコードだと抽出後、可視セルのみではなく検索が引っかかったセルから下まで全て処理されてしまいます…。※else以降の処理です。
例えば可視セルのB列のみ文字列を変えたい場合、どうしたらいいのでしょうか…?
ちなみに対象シートは2万行ほどあります。
.Range("A1").AutoFilter 2, "田中"
If .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then
.Range("A1").AutoFilter
Else
.Range(Range("B2"), Range("B" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible) = "佐藤"
Range("A1").AutoFilter
End If
No.4ベストアンサー
- 回答日時:
No.2・3です。
>実際の文字列だと「・・・」「ー」が含まれており・・・
B列セル内の「田中」の部分を「佐藤」に置換すれば良いのですかね?
そうであれば
.Range("B:B").Replace what:="田中", replacement:="左藤", lookat:=xlPart
になるだけですが、
そのセル全体(他の文字列も消去し「佐藤」だけにしたい!)という場合であれば
1セルずつ検索する必要があると思います。
データは約2万程度あるというコトなので、単にループさせるだけでは相当時間を要してしまうと思いますので、
配列等で処理した方が良いかも・・・m(_ _)m
早速ご返信ありがとうございます(*'▽')
配列は苦手なもので、ループで処理したら出来ました!w
お知恵をお貸しいただきありがとうございました!
No.5
- 回答日時:
No1です。
>処理されなったものの文字列に「・・・」や「ー」が含まれるからだと思うのですが
ご提示のコードでもそうですが、(明示するしないとは別に)意味合いとして lookat:=xlWhole となっているので、セル内の文字と完全一致で検索しています。
部分一致で検索なさりたいのなら、lookat:=Xlpart などにすれば良いでしょう。
ただし、『山田中人』や『大田中 正人』のようなものも引っかかるようになりますのでご注意。
「完全一致/部分一致」のように単純ではなく、複雑な条件で検索なさりたいような場合は、対象範囲をループして検索するような方法になると思われます。
またまたありがとうございます(^^)/
今回は完全一致で処理したかったので、オートフィルタ後ループで処理したら何とか出来ました!
前回に引き続き、本当にありがとうございました!!
No.2
- 回答日時:
こんにちは!
コードを拝見すると、B列が「田中」の場合「佐藤」にすればよい!ということですかね。
データは2万行程度あるというコトなので、オートフィルタを使わず置換をしてみてはどうでしょうか?
何のオブジェクトに対するWithステートメントか不明ですが・・・
>.Range("B:B").Replace what:="田中", replacement:="左藤", lookat:=xlWhole
の1行だけでいけるような気がします。m(_ _)m
はじめまして!ご回答ありがとうございます~!
そうなんです!B列が「田中」の場合「佐藤」にしたいのですが…。
実際の文字列だと「・・・」「ー」が含まれており、Replaceメソッドだと正しく動いてくれないのです( ノД`)
なのでオートフィルタでやればいいかなと思うのですが、私の未熟なコードだと「田中」じゃないものまで全て「佐藤」になってしまうのです。
他に良い案が思いついたら、ご教示いただけたら喜びます!
ありがとうございました。
No.1
- 回答日時:
こんにちは
with構文の中と思われるので、省略されているオブジェクトが何なのか不明ですが…
>.Range("A1").AutoFilter 2, "田中"
フィルタの範囲をキチンと指定してあげれば良さそうに思います。
仮に、withのオブジェクトが例えばシート等だとすれば、
.Range("A1:B20000").AutoFilter 2, "田中"
などにしておけば良いのでは?
一方で、全体の雰囲気として、「田中」を「佐藤」に変えたいのかと思いますが、わざわざフィルタを用いなくても
.Columns(2).Replace What:="田中", Replacement:="佐藤", LookAt:=xlWhole
の1行で済んでしまいそうな気もしますけれど・・・?
(上記では1行目もt対象に含まれてしまっていますが)
fujillinさま
前回に引き続き、ありがとうございます(´ω`*)
お察しの通り、withオブジェクトで省略したものはシート名です。
そして、補足になりますが、Replaceメソッドを使用した結果、適切に処理されるものとされないものがあり…。実際、処理されなったものの文字列に「・・・」や「ー」が含まれるからだと思うのですが><
なので処理されなかったものを、オートフィルタでやってみようと思った次第です。
そこで、ご指摘の通りフィルタの指定をしてみても、思うように動作しません。検索が引っかかったところから下の行全て、同じ「佐藤」になってしまいます(´;ω;`)ウッ…
そもそもなぜReplaceが適切に動いてくれないのか謎ですが…
また何か思いついたらご教示いただければ嬉しいです!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
Excel VBAでCheckboxの名前を変...
-
VBA:日付を配列に入れ別セルに...
-
Excel UserForm の表示位置
-
【Excel VBA】一番右端セルまで...
-
Excel 範囲指定スクショについ...
-
入力規則のリスト選択
-
EXCEL VBA 文中の書式ごと複写...
-
【VBA】写真の貼り付けコードが...
-
エクセルのカーソルを非表示に...
-
Excel-VBA セルのデータ書出し(Q2)
-
セルの半透明着色処理
-
マクロ初心者です。 マクロで範...
-
excelで結合セルの場合にエラー...
-
【ExcelVBA】値を変更しながら...
-
飛び地セルの空白判定
-
VB.netでのExcelデータの読み込み
-
VBAについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
特定の色のついたセルを削除
-
Excel UserForm の表示位置
-
Excelで空白セル直前のセルデー...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
【Excel VBA】一番右端セルまで...
-
Excel VBAでCheckboxの名前を変...
-
EXCEL VBA 文中の書式ごと複写...
-
入力規則のリスト選択
-
DataGridViewのフォーカス遷移...
-
【VBA】写真の貼り付けコードが...
-
CellEnterイベント仕様について
-
下記のマクロの説明(意味)を...
-
飛び地セルの空白判定
-
Excel 範囲指定スクショについ...
-
C# DataGridViewで複数選択した...
-
Excel VBA IF文がうまく動作し...
-
エクセルのカーソルを非表示に...
おすすめ情報