19

ワークシートがあります。セルの値に基づいて行を削除する必要があります。

チェックするセルは列Aにあります。

セルに「-」が含まれている場合..行を削除

これを行う方法が見つかりません..ブックを開き、すべてのコンテンツを別のブックにコピーしてから、行と列全体を削除しますが、セルの値に基づいて削除する必要がある特定の行があります。

ここで助けが必要です。

アップデート

私が持っているデータのサンプル

サンプル

4

7 に答える 7

18

これを行う最も簡単な方法は、フィルターを使用することです。

列Aの「-」がないセルをフィルタリングしてコピー/貼り付けするか、(私のより好ましい方法)「-」が含まれるすべてのセルをフィルタリングしてからすべてを選択して削除することができます-1回フィルタを削除すると、必要なものが残ります。

お役に立てれば。

于 2013-01-30T21:17:27.833 に答える
15

スクリーンショットは非常に役に立ちました-次のコードがその仕事をします(データがA1から始まる列Aにあると仮定します):

Sub RemoveRows()

Dim i As Long

i = 1

Do While i <= ThisWorkbook.ActiveSheet.Range("A1").CurrentRegion.Rows.Count

    If InStr(1, ThisWorkbook.ActiveSheet.Cells(i, 1).Text, "-", vbTextCompare) > 0 Then
        ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Delete
    Else
        i = i + 1
    End If

Loop

End Sub

サンプルファイルは共有されます:https ://www.dropbox.com/s/2vhq6vw7ov7ssya/RemoweDashRows.xlsm

于 2013-01-30T23:02:38.130 に答える
9

次のような数式を新しい列にコピーできます...

=IF(ISNUMBER(FIND("-",A1)),1,0)

...次に、その列で並べ替え、値が1であるすべての行を強調表示して、それらを削除します。

于 2013-01-30T21:31:35.910 に答える
5

特定のセル値に基づいて行を削除する場合。10000行を含むファイルと、値がNULLのフィールドがあるとします。そして、そのnull値に基づいて、これらのすべての行とレコードを削除します。

ここにいくつかの簡単なヒントがあります。最初に[置換の検索]ダイアログを開き、[置換]タブで、NULL値を含むすべてのセルを空白にします。次に、F5キーを押して[空白]オプションを選択し、アクティブなシートを右クリックして[削除]を選択し、[行全体]のオプションを選択します。

含まれている単語NULLのセル値に基づいて、これらの行をすべて削除します。

于 2014-02-15T18:03:11.167 に答える
4

ファイルが大きすぎない場合は、-が含まれている列でいつでも並べ替えることができます。すべてまとめたら、強調表示して削除します。次に、必要なものに並べ替えます。

于 2016-12-01T23:56:32.417 に答える
1

範囲内の各セルをループし、InStr関数を使用して、セルに文字列が含まれているかどうかを確認できます。ハイフン。

Sub DeleteRowsWithHyphen()

    Dim rng As Range

    For Each rng In Range("A2:A10") 'Range of values to loop through

        If InStr(1, rng.Value, "-") > 0 Then 'InStr returns an integer of the position, if above 0 - It contains the string
            rng.Delete
        End If

    Next rng

End Sub
于 2013-01-30T22:58:19.050 に答える
1

これは、関数のベースとなるオートフィルターマクロです。

Selection.AutoFilter
ActiveSheet.Range("$A$1:$A$10").AutoFilter Field:=1, Criteria1:="=*-*", Operator:=xlAnd
Selection.AutoFilter

このオートフィルター関数を使用して、一致する行を削除します。

Public Sub FindDelete(sCol As String, vSearch As Variant)
'Simple find and Delete
Dim lLastRow As Integer
Dim rng As Range
Dim rngDelete As Range
    Range(sCol & 1).Select
    [2:2].Insert
    Range(sCol & 2) = "temp"
    With ActiveSheet
        .usedrange
            lLastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
        Set rng = Range(sCol & 2, Cells(lLastRow, sCol))
            rng.AutoFilter Field:=1, Criteria1:=vSearch, Operator:=xlAnd
        Set rngDelete = rng.SpecialCells(xlCellTypeVisible)
            rng.AutoFilter
            rngDelete.EntireRow.Delete
        .usedrange
    End With
End Sub

次のように呼びます:

call FindDelete "A", "=*-*"

それは私に多くの仕事を節約しました。幸運を!

于 2014-06-03T18:03:58.407 に答える