EXCEL特定の列内で記載があった行を削除
- EXCEL特定の列内で記載があった行を削除する方法を知りたい。
- G列に記載がある行のみを残し、それ以外の行を削除したい。
- さらに、L列に何か記載があった場合にはその行も削除したい。
- ベストアンサー
EXCEL 特定の列内で記載があった行を削除
G列に記載があったものだけを残したいと以前質問した際に回答を頂いた内容ですが、 この内容にプラスして、L列に何か記載があった場合、その行は削除するようにしたいと考 えています。 詳しい方が居りましたら、是非頂けないでしょうか? sub macro2() range("G:L").autofilter field:=1, criteria1:="=" activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup activesheet.autofiltermode = false end sub 環境 Excel2003を利用しています。
- yasuhito_s1
- お礼率100% (43/43)
- Excel(エクセル)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Sub Macro3() With Range("G:L") .AutoFilter Field:=6, Criteria1:="<>" ActiveSheet.AutoFilter.Range.Offset(1).EntireRow.Delete Shift:=xlShiftUp ActiveSheet.ShowAllData .AutoFilter Field:=1, Criteria1:="=" ActiveSheet.AutoFilter.Range.Offset(1).EntireRow.Delete Shift:=xlShiftUp End With ActiveSheet.AutoFilterMode = False End Sub
関連するQ&A
- EXCEL 頭に特定の文字があった場合、文字記入
B列に複数の品番がありますが、頭に「CY」があった品番のみK列に「図面は不要」と自動で入力するように下記マクロに追加したいのですが、教えて下さる方からの回答をお待ちしています。 ※BからK列のJ列に記載があったものだけを抜粋しています。 sub macro() range("B:K").autofilter field:=9, criteria1:="=" activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup activesheet.autofiltermode = false end sub
- ベストアンサー
- Excel(エクセル)
- EXCELマクロ AutoFilterの使い方を教えて下さい。
EXCELマクロ AutoFilterの使い方を教えて下さい。 EXCELマクロ初心者です。使用環境は、EXCEL2007です。 Web上で紹介されていたマクロをアレンジして以下のようなマクロを作成しました。 B列に指定した数字が記載された行を削除するものです。 これをさらに、4,5,6,・・・,11,12,1,2,3の中から指定した数字以外がB列に記載 された行を削除するように書き換えたいのですが、「Criteria1:=intCriteria」 を「Criteria1:<>intCriteria」として実行してみましたがエラーが出てしまいま す。 どなたか、良い方法をご教示ください。不足の情報、私の説明不足がありましたら、 ご指示ください。 以下、MACRO内容 Sub B列に指定の数字がある場合、行を削除() Application.ScreenUpdating = False intCriteria = InputBox("検索する数字を入力。", "数字入力") With Cells(2, 1).CurrentRegion On Error GoTo errhandler .AutoFilter Field:=2, Criteria1:=intCriteria .Offset(1).Resize(.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ActiveSheet.AutoFilterMode = False Exit Sub errhandler: ActiveSheet.AutoFilterMode = False MsgBox intCriteria & "はありません。" Application.ScreenUpdating = True End Sub
- ベストアンサー
- オフィス系ソフト
- オートフィルタを使わずに行削除
こんにちは。 簡易記録のマクロで実行したものが、以下となります。 オートフィルタで選択した0以下の行を削除するために選択した物になります。 Sub 0以下を削除() ' Macro test ' ActiveSheet.Range("$A$1:$G$165").AutoFilter Field:=7, Criteria1:="<=0", _ Operator:=xlAnd Rows("3:56").Select ActiveWindow.SmallScroll Down:=66 Rows("3:165").Select Selection.Delete Shift:=xlUp ActiveSheet.Range("$A$1:$G$123").AutoFilter Field:=7 End Sub 行数は、日によって、様々で何千行となる場合もあります。 そこで、オートフィルタを使用せず、G列目の0以下の数値を行削除を行いたいです。 どのように設定したらいいか教えて頂けると幸いです。 不備がありましたら、補足を入れますので、 お手数ではございますが、宜しくお願い致します。
- ベストアンサー
- Excel(エクセル)
- Excelマクロでオートフィルターからコピペ
ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 特定文字列を含む行を削除するマクロ
すみませんどなたか教えてください。 エクセルで商品の在庫管理をしておりまして、AP列に製品メーカー名が入っているのですが、 いくつかの(数十個)メーカーを省き削除したく思い、以下のようなマクロをググって作ってみましたが、 上手く動きませんでした。 1つのメーカーだけ記載した場合はうまく動きました。 やりたいことは1つのマクロの中に、数十個のメーカー名を記入しておき、そのメーカーを全件 検索して、AP列に文字列が含まれる場合は、その行を削除したいです。 宜しくお願い致します。 ~~~~~~ Sub DelLines1() Dim R As Range Do Set R = ActiveSheet.Range("AP:AP").Find(What:="softbank", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop Sub DelLines2() Dim R As Range Do Set R = ActiveSheet.Range("AP:AP").Find(What:="docomo", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop Sub DelLines3() Dim R As Range Do Set R = ActiveSheet.Range("AP:AP").Find(What:="au", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop End Sub
- ベストアンサー
- Excel(エクセル)
- Excel VBA 変数 ワークシートへ反映
支店毎に売上集計を行うVBAを現在作成中です。 sheet3に支店名をリストにしており、ユーザーフォームのテキストボックスとコマンドボックスを配置し、テキストボックスに支店名を入力してコマンドボックスを押す事でsheet1の決まったセルに商品毎の金額の合算が出る様にしたいと考えています。 金額の集計表は別にあり、列の一番目に支店名、2番目に商品名、3番目に取引内容が反映されております。 今回ご相談させて頂きたいのは、ユーザーフォームのコマンドでどの様に入力したら良いかという事です。下記にユーザーフォームで現在までに入力した内容を記載します。 Sub 売上集計() If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If Dim Result As Long For i = 1 To 100 GroupName = Sheets(3).Cells(i, 1).Value Range("A1").AutoFilter field:=1, Criteria1:=Array("" & GroupName & ""), Operator:=xlFilterValues Range("A1").AutoFilter field:=2, Criteria1:=Array("商品名A"), Operator:=xlFilterValues Range("A1").AutoFilter field:=3, Criteria1:=Array("売上", "返品"), Operator:=xlFilterValues result1 = WorksheetFunction.Subtotal(9, Range("BF:BF")) If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If End Sub 上記希望内容についてユーザーフォームのコマンドに入力すべき内容をご存知の方、何卒ご教示願います。
- ベストアンサー
- Visual Basic
- VBAのAutoFilterのFieldに名前
VBA(EXCEL)のAutoFilterについて質問します。 Fieldに列番号ではなく、列につけた名前を設定することはできないでしょうか? Sub Macro1() Selection.AutoFilter ActiveSheet.Range("$A$1:$B$9").AutoFilter Field:=1, Criteria1:="山田" End Sub 列番号で設定すると、列が増えた時に、改めてAutoFilterの列番号設定を変更する必要があり煩雑に感じています。 名前設定以外に適切な方法があれば教えて下さい。
- 締切済み
- Excel(エクセル)
- エクセルVBAで住所録を作成
住所録シートに次のようにコードを作っています。 Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$B$1" Then 顧客名検索 ElseIf Target.Address = "$C$1" Then フリガナ検索 ElseIf Target.Address = "$D$1" Then 住所検索 ElseIf Target.Address = "$E$1" Then 郵便番号検索 ElseIf Target.Address = "$A$1" Then オートフィルタ解除 カナ順に設定 Else Exit Sub End If End Sub そして標準モジュールには Sub 顧客名検索() ans = InputBox("顧客名を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=2, Criteria1:="=*" & ans & "*" '2つ目のフィルターに検索文字 End With End Sub Sub フリガナ検索() ans = InputBox("顧客カナを入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=3, Criteria1:="=*" & ans & "*" '3つ目のフィルターに検索文字 End With End Sub Sub 住所検索() ans = InputBox("住所を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=4, Criteria1:="=*" & ans & "*" '4つ目のフィルターに検索文字 End With End Sub Sub 郵便番号検索() ans = InputBox("郵便番号を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=5, Criteria1:="=*" & ans & "*" '5つ目のフィルターに検索文字 End With End Sub Sub オートフィルタ解除() Application.CutCopyMode = False Selection.AutoFilter Range("A1").Select End Sub Sub カナ順に設定() Range("C1").Select ActiveWorkbook.Worksheets("住所録").Sort.SortFields.Clear ActiveWorkbook.Worksheets("住所録").Sort.SortFields.Add Key:=Range("C1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("住所録").Sort .SetRange Range("A2:IV65536") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A2").Select Selection.AutoFilter End Sub と入れています。 VISTAで作ったのですが、このファイルを共有にして使おうとすると、XPのパソコンでは、A1セルをダブルクリックすると、コードが黄色になり、マクロが中断されます。 B1~G1は問題なくマクロが実行されるのに・・・。 もう一台のVISTAでは同じ共有状態で使っても問題ありません。 どうすればXPでも問題なく使えるのでしょう?
- ベストアンサー
- オフィス系ソフト
- ダブルクリックでエクセル起動
セルをダブルクリックしてマクロを起動させたいのですが。 B1セルをダブルクリックすると、 Sub 顧客名検索() ans = InputBox("顧客名を入力してください") With ActiveSheet If .AutoFilterMode Then 'オートフィルタモードがオンなら .AutoFilterMode = False 'リセットする End If .Range("A1:G1").AutoFilter 'オートフィルタモードをセット .Range("A1:G1").AutoFilter Field:=2, Criteria1:="=*" & ans & "*" '2つ目のフィルターに検索文字 End With End Sub を実行させるようにしたいのです。 その方法で、C1、D1、E1、・・・も同様にしたいと思っています。 どなたか教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロで意図しない文字が消える
エクセルのマクロを組んでいて、なぜか実行すると意図しない文字が消えてしまいます 至急解消したいので、どうぞよろしくお願いします N8から、数値が一列に並んでいて、「0」を消して行くという目的です 下記のような組み方をしています すると、P列1行目からAF列まで入っていた文字が消えてしまいます これを解消する方法を教えて下さい '0を消す Const intCriteria As Integer = 0 With Cells(8, 14).CurrentRegion On Error GoTo errhandler .AutoFilter Field:=14, Criteria1:=intCriteria .Offset(1).Resize(.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ActiveSheet.AutoFilterMode = False Exit Sub errhandler: ActiveSheet.AutoFilterMode = False MsgBox intCriteria & "はありません。"
- ベストアンサー
- オフィス系ソフト
お礼
お世話になります。 早速回答頂き恐縮です。 わからないことばかりですが、頑張って少しずつですが 覚えていきたいと思います。 有難うございました。