0

range.find内にOR関数を入れることは可能ですか? 私はこの関数を持っていますが、2つの値のいずれかを探したいです

With Worksheets("Term").Range("A:A")

    Set rng = .Find(What:=Worksheets("Term and Discipline").Range("K7"), _
        After:=.Cells(.Cells.Count), _
        LookIn:=xlValues, _
        LookAt:=xlPart, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=False)
        Application.Goto rng, True

End With

探しているものを提供する行に OR ステートメントを入れようとしましたが、Excel を実行しようとすると怒ってしまいます

4

3 に答える 3

3

最も近いのは、検索を並行して(効果的に)実行し、MIN()見つかった最初のセルを選択するために使用することだと思います。

Sub FindingNemor()
    Dim rngFoo As Range
    Dim rngBar As Range

    Set rngFoo = Cells.Find(What:="foo", After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
    Set rngBar = Cells.Find(What:="bar", After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)

    If Not rngFoo Is Nothing And Not rngBar Is Nothing Then
        Range("A1").Cells(Application.Min(rngFoo.Row, rngBar.Row)).Select
     End If
End Sub

rngFoo または rngBar の 1 つだけが Nothing の場合は、追加のチェックが必要です。

-nessのチェックを追加Nothingすると、少し面倒になります。

Sub FindingNemor()
    Dim rngFoo As Range
    Dim rngBar As Range

    Set rngFoo = Cells.Find(What:="foo", After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
    Set rngBar = Cells.Find(What:="bar", After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)

    If Not rngFoo Is Nothing And Not rngBar Is Nothing Then
        Range("A1").Cells(Application.Min(rngFoo.Row, rngBar.Row)).Select
    ElseIf rngFoo Is Nothing Then
        If rngBar Is Nothing Then
            MsgBox "Neither found."
        Else
            Range("A1").Cells(rngBar.Row).Select
        End If
    Else
        Range("A1").Cells(rngFoo.Row).Select
    End If
End Sub
于 2013-07-26T21:27:36.630 に答える
1

このRange.Findメソッドは、Excel で CTRL+F を入力したときと同じウィンドウをエミュレートします。そのウィンドウで同時に 2 つ以上の値を検索することはできないため、VBA を使用して同時に 2 つ以上の値を検索できるとは思えません。残念ながら、この方法を2回行う必要があると思います。

私が間違っている場合は、これを行う方法を知りたいです。それはとても便利です。だから、私が間違っていることを証明してください:)

私のテストでは、Range.Findメソッドは配列または複数のセルの範囲をサポートしていません。だから、それらはアウトです。

また、TRUE/FALSE をチェックして TRUE/FALSE を返すORため、使用しようとしても正しく動作しません。OR

于 2013-07-26T20:36:16.487 に答える
0

範囲内のすべてのセルをループして、Like関数またはステートメントでInStr使用する必要がありますIfOr.

于 2014-09-23T13:02:26.877 に答える