- 締切済み
現在のリストから、削除したい一覧一を気に消したい
どなたか、エクセル教えてください。 現在のリストから、削除したい一覧一を気に消したい ネットショップをやっていて「関連商品」リストを作っているのですが、、 その中で廃番が出てきます。 その廃番リストを一気に関連商品から消したいと思っています。 わかりづらいと思うので、やりたい事の画像を添付します。 1個1個置換していくと 数百個あるので超めんどくさくて どなたか、助けて下さい!どなたか、エクセル教えてください。 「廃番」リストの一覧を簡単に 「関連商品」リストから消し去る方法どなたか教えてもらえませんか? わかりづらいと思うので、やりたい事のエクセルデータを付けます。 1個1個置換していくと 数百個あるので超めんどくさくて どなたか、助けて下さい!
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 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)
こんにちは。 一度登録しておけば、後が楽なように、 対話型のマクロを書いてみました。 (登録の仕方が見つけられない場合は補足欄にでもその旨書いてみて下さい) 使い方はダイアログ表示の指示のまま、商品リストと削除対象リストを指定するだけです。 ' ' ▼この下の行から▼ 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)
画像が小さくてレイアウトがわからないのですが、元データがSheet2のA2セル以下に入力されていて、削除したい文字列がK2:K5セルに入力されているなら、新規シートのA2セルに以下の式を入力して右方向および下方向にオートフィルして、そのまま、このデータ範囲をコピーして、元データのA2セル(基準セル)を選択して、右クリック「形式を選択して貼り付け」で「値」を選択してください。 =IF(COUNTIF(Sheet2!$K$2:$K$5,Sheet2!A2),"",Sheet2!A2)&"" #数値データが含まれているときは式の最後の「&""」は削除して、セルの書式設定などで0を表示しない設定にしてください。