• 締切済み

現在のリストから、削除したい一覧一を気に消したい

どなたか、エクセル教えてください。 現在のリストから、削除したい一覧一を気に消したい ネットショップをやっていて「関連商品」リストを作っているのですが、、 その中で廃番が出てきます。 その廃番リストを一気に関連商品から消したいと思っています。 わかりづらいと思うので、やりたい事の画像を添付します。 1個1個置換していくと 数百個あるので超めんどくさくて どなたか、助けて下さい!どなたか、エクセル教えてください。 「廃番」リストの一覧を簡単に 「関連商品」リストから消し去る方法どなたか教えてもらえませんか? わかりづらいと思うので、やりたい事のエクセルデータを付けます。 1個1個置換していくと 数百個あるので超めんどくさくて どなたか、助けて下さい!

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! VBAになってしまいますが、一例です。 置換ではどうでしょうか? 元データはSheet1にあり、Sheet2のA列1行目から削除データがあるとします。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, wS As Worksheet Set wS = Worksheets("Sheet2") For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row Worksheets("Sheet1").Cells.Replace what:=wS.Cells(i, "A"), replacement:="", lookat:=xlWhole Next i End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。 一度登録しておけば、後が楽なように、 対話型のマクロを書いてみました。 (登録の仕方が見つけられない場合は補足欄にでもその旨書いてみて下さい) 使い方はダイアログ表示の指示のまま、商品リストと削除対象リストを指定するだけです。 ' ' ▼この下の行から▼ Sub Re8754047() Const STTL = "現在のリストから、削除したい一覧一を気に消したい" Dim vRtn Dim vRemoveList Dim c As Range   vRtn = Array(Application.InputBox( _     Prompt:="商品リストを【範囲】指定", _     Title:=STTL, _     Type:=8))   If UCase(TypeName(vRtn(0))) <> "RANGE" Then     MsgBox "【範囲】指定が不正。処理中止", vbExclamation, "リストからアイテムを一括削除"     Exit Sub   End If   vRtn(0).Select   vRtn = Array(vRtn(0), Application.InputBox( _     Prompt:="削除対象リストを【範囲】指定" & vbLf & " 【単列】のセル【範囲】", _     Title:=STTL, _     Type:=8))   If UCase(TypeName(vRtn(1))) <> "RANGE" Then     MsgBox "【範囲】指定が不正。処理中止", vbExclamation, STTL     Exit Sub   End If   If vRtn(1).Columns.Count > 1 Then     MsgBox "削除対象リストの【範囲】指定は【単列】。処理中止", vbExclamation, STTL     Exit Sub   End If   vRemoveList = vRtn(1).Value   vRemoveList = Application.Transpose(vRemoveList)   vRemoveList = Application.Text(vRemoveList, "@")   vRemoveList = vbCr & Join(vRemoveList, vbCr) & vbCr   Do While InStr(vRemoveList, String$(2, vbCr))     vRemoveList = Replace(vRemoveList, String$(2, vbCr), vbCr)   Loop   For Each c In vRtn(0)     If Not IsEmpty(c) Then       If InStr(vRemoveList, vbCr & c.Text & vbCr) Then c = Empty     End If   Next   With vRtn(1)     .Interior.Color = &HBB88888     If MsgBox("処理完了" & String(2, vbLf) & "削除対象リストを消去しますか?", 68, STTL) _       = vbYes Then .ClearContents ' 68 = vbInformation Or vbYesNo     .Interior.ColorIndex = xlColorIndexNone   End With End Sub ' ' ▲この上の行まで▲

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

画像が小さくてレイアウトがわからないのですが、元データがSheet2のA2セル以下に入力されていて、削除したい文字列がK2:K5セルに入力されているなら、新規シートのA2セルに以下の式を入力して右方向および下方向にオートフィルして、そのまま、このデータ範囲をコピーして、元データのA2セル(基準セル)を選択して、右クリック「形式を選択して貼り付け」で「値」を選択してください。 =IF(COUNTIF(Sheet2!$K$2:$K$5,Sheet2!A2),"",Sheet2!A2)&"" #数値データが含まれているときは式の最後の「&""」は削除して、セルの書式設定などで0を表示しない設定にしてください。

関連するQ&A