• ベストアンサー

特定のキーワードのセルだけ空白にするマクロを教えてください。

URLが入ったセルが1000行くらいのシートの、ある特定のキーワードだけ(20キーワードくらい)を空白にして、なおかつURLの重複を省くマクロが書きたいのですが、どう書いたらいいでしょうか?

noname#181401
noname#181401

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

Sheet1のA列にURLが1000行、Sheet2のA列にキーワードが20行登録されている場合の例を示します。 結果はSheet3に作成されます。 Private Sub CommandButton1_Click()   Dim Row As Integer   Dim i1 As Integer   Dim i2 As Integer   Dim i3 As Integer   Dim p As Integer   Dim n As Integer   Dim S As String   ' Sheet3のクリア   Sheets("Sheet3").Cells.ClearContents   Row = 0   For i1 = 1 To 1000     S = Sheets("Sheet1").Cells(i1, 1).Value     ' キーワードの消去     For i2 = 1 To 20       n = Len(Sheets("Sheet2").Cells(i2, 1).Value)       If n = 0 Then Exit For       p = InStr(S, Sheets("Sheet2").Cells(i2, 1).Value)       While p > 0         S = Left(S, p - 1) & Right(S, Len(S) - p + 1 - n)         p = InStr(S, Sheets("Sheet2").Cells(i2, 1).Value)       Wend     Next i2     ' 重複判定     If Row > 0 Then       For i3 = 1 To Row         If S = Sheets("Sheet3").Cells(i3, 1).Value Then           S = ""           Exit For         End If       Next i3     End If     ' 登録     If S <> "" Then       Row = Row + 1       Sheets("Sheet3").Cells(Row, 1).Value = S     End If   Next i1 End Sub

noname#181401
質問者

お礼

ありがとうございます! 試してみます!

noname#181401
質問者

補足

できました! ただ、これでsheet2のキーワードを消すだけでなく、 そのキーワードが入ったセルごと空白にできると嬉しい のですが…。

その他の回答 (1)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

具体例を示してもらえませんか。

noname#181401
質問者

補足

ご連絡ありがとうございます。 藤岡です。 A列にhttp://hon.comとかのURLが1000個ぐらいある。 このセルの中で“ww”とか“rr”とかが入っている ものはいらない。 なので、そのセルそのものを空白にする。 URLは自動取得してきたものなので、http://hon.com が2つも3つもある場合がある。 それも1つだけしたい。 ・・・こんな感じです。 具体例になってますでしょうか? よろしくお願いします。

関連するQ&A

  • キーワードを空白付きで自動でくっつけていくマクロを教えてください。

    キーワードを空白付きで自動でくっつけていくマクロを教えてください。 sheet1の1行目には「○○系」というキーワードのジャンル名を入れてます。 その下の行から、1行目に入ったジャンル名に沿ったキーワードが入ってます。 例えばA列だったら、セルA2からキーワードが入ってますが、キーワード数は列によってバラバラです。 A列が動物系だったら、パンダ、うさぎ、犬などが100以上あるような感じです。 sheet2にも同じようにキーワードが入っています。 sheet3にはsheet2のA列から順番に、かけあわせたいキーワードのSheet1の1行目のジャンル名を入れています。 例えば、sheet3のA列には、sheet2のA列とsheet1のジャンル名をいくつかとかけあわせたいというのが入ってるのです。 sheet2のA列は形容詞系というジャンル名が1行目にあり、A2からは形容詞が並んでます。 それは、sheet1の動物系、植物系、雑貨系などというジャンル名です。 それとかけあわせて、「かわいい パンダ」「パンダ かわいい」というキーワードを作っていきたいのです。 多分、「もしsheet3のA列に入ってるジャンル名がsheet1の1行目にあれば、その下のセルからsheet2のA2から最終行までのキーワードと自動的にかけあわせていく。終わったら、次の列に移動して、同じ処理を繰り返す」という文になると思うのですが、かけあわせる関数などが見つからずに困ってます。 教えていただけないでしょうか? よろしくお願いします。

  • 空白セルの削除と重複データの加算のマクロ

    シート1の文字列のデータの0又は空白のセルを取り除いて、並んでいる文字列の左と真ん 中の数が重複しているデーターは左端の数を加算して別のシート2のC10からC100のセルに抽出できるマクロを教えて下さい。データーの0は関数で空白にしたいと思っています。 データの並び方はこのままで重複するデーターの加算と空白のセルの削除を一回のマクロで実行したいのです。  E列               空白を削除    0-4-1              0-4-1         2-3-2              2-3-2         2-2-3              2-2-(3) 0                 2-2-(1) 2-2-1              4-1-9 4-1-9              2-1-7 2-1-7              2-2-3 0                 2-3-(5)                (数式がある空白セル)   2-3-(1)            2-2-3              2-3-(4) 0                 0-4-1 2-3-5 2-3-1 2-3-4 0-4-1 シート2のB列10~100に抽出 0-4-1 2-3-2 2-2-4 4-1-9 2-1-7 2-2-3 2-3-10 0-4-1 このように抽出したいのです。

  • マクロにて空白のセルを一括して消去でなく削除したい

    空白のセルを一括して、空白セルについた色も含めてマクロで全て削除したい。 現在のデータ(仕様)について 1.Sheet2に列ごとにセルに色をつけ、データもあるとします。 2.A列10行・B列6行・C;列18行というように、列によってデータの入った範囲が違います。 3.どの行も途中に空白セルはなく、詰めたデータです。 以上です マクロで一括処理したいと思いますが、このようなことができるコードを教えて頂けませんか。よろしくお願いします。

  • 空白のセルを行削除する。EXCELマクロなのですが・・

    VBA初心者です。 データーをHPから、単純にコピーしてきて、 EXCELに貼り付けています。 フィルターをかけても、画像かなにかがセルに張り付いているのか、 空白行をすべて削除できません。 いろいろ試して(HPから、空白セルの行削除について書かれてあるマクロを貼り付けて)動いたのが、このVBAです。 しかし、遅いので、早いVBAに簡略できればいいのですが。。 大体、1000行ぐらいの文字を貼り付けて、3/1ぐらいが空白行です。A行のセルの空白のみを、削除したいのですが。  まったくの素人なので、わかりません。 どうかよろしくお願いいたします。 Sub 空白の削除() x% = Worksheets("sheet1").Range("A65536").End(xlUp).Row For i = x% To 1 Step -1 If Worksheets("sheet1").Cells(i, 1).Value = "" Then Worksheets("sheet1").Rows(i).Delete Next End Sub

  • 特定の範囲内に空白セルがいくつあるかを数えるマクロを作りたいのですが。

    B1セルからB500セルまでの間に、 空白セルがいくつあるかを数えるマクロを作りたいのですが…。 自分では作れません。 作ってください!!! お願いします。

  • マクロで空白セルに貼り付ける

    エクセルで表を作っていますが、マクロを使って、空白セルの左隣の値をコピーし、空白セルに貼り付けをしたいのですが、うまくいきませんでしたので、教えてください。

  • マクロで空白セルをNULLという文字に置き換えたい

    はじめまして。 初投稿します。 エクセルのマクロは初心者です。 早速質問ですが、 空白セルを'NULL'という文字列に置き換えたいのです。 その空白セルは複数あり、扱うデータの行の中にランダムで 空白のセルがある状態です。IF関数にて処理する場合、 どのように処理すればよいのでしょうか。 わかりづらい文章かと思いますが、よろしくお願い致します。

  • エクセルマクロで空白セルをチェックさせたい

    エクセルで記入漏れが無いかチェックするマクロを教えて下さい。 A10~A40まで日付を記入させるのですが、何行記入されるかは不特定です。 それぞれの日付に対応する備考欄C10~C40に、記入が無い場合メッセージボックスで通知するというマクロです。ちなみに空白セルが複数あってもメッセージボックスは1回だけの出現にさせたいです。 初心者なもので行き詰ってしまいました。よろしくお願いします。    A   B   C 10 12/5     ○○ 11 12/6     △△ 12 12/7         ←記入漏れ 13 12/8     ×× 14             ←以下空白

  • Excel 空白行を上に詰めるマクロ

    関数を使用して、sheet1からsheet2に必要なデータを抜き取りました。 sheet2のセルには関数が入っています。 sheet2の抽出データには1行単位(まれに2~3行続けて)空白が発生します。 この行を削除し、かつ上に詰めて表示をしたいのですが、下記の条件で実行可能でしょうか? (例) sheet1 ⇒ sheet2   A   B   C     A  B  C 1 あ  い  う   1 あ  い  か 2        か   2 (空白行) 3 き  く   け    3 き  く  し   4 こ  さ   し   4 (空白行) ●2行目、4行目を削除し、且つ5行目以降に入力されている関数は削除したくない ●空白行削除のマクロは自動?(sheet1のデータを変更したら)で実行できるようにしたい よろしくお願いします。

  • 特定のセルをフィルタするマクロを作りたい

    特定のキーワードが含まれるセルをフィルタするマクロを作りたいです。 使用環境はExcel2010です。 口頭ではわかりにくいので、画像を添付します。 添付画像のように、それぞれの人物名と点数が一覧になった表があります。 特定の名前の人で点数が一定以下の行をフィルターしたいのですが、毎回フィルターで名前を選ぶのが面倒なので、マクロの記録機能で下記のマクロを作成しました。 Selection.AutoFilter ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=2, Criteria1:="=鈴木", _ Operator:=xlOr, Criteria2:="=田中" ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=3, Criteria1:="<70", _ Operator:=xlAnd 上記のマクロで、「田中」と「鈴木」のみ、点数が70点に満たなかった行を抜き出しています。 しかし、他部署の人物も調査の対処に含めるため、E2:E7セルに調査したい対象の名前を入れ、自動的にセルに入力された名前でフィルタリングされるようにしたいです。 この際のマクロの記載方法を知りたいです。 *部署によって人数が異なるため、E2:E7セルに入力する名前がすべて埋まるとは限りません。 *実際の名前と点数は毎月新しいExcelブックで送られてくるので、フィルター用のExcelシートにコピーペーストで張り付けて使用予定です。 *記載されている名前や点数は例です。

専門家に質問してみよう