• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ FIND どちらか先にHitする方を選択)

マクロ FIND で先にHitする方を選択する方法は?

このQ&Aのポイント
  • マクロを使用して複数の検索対象から先にHitする方を選択する方法について教えてください。
  • Excelのマクロで検索対象が複数ある場合、先にHitする方を選択する方法を教えてください。
  • どうすればExcelのマクロで検索対象から先にHitする方を選択できるのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

こういう事でいいですか? 質問文のコードにはシートを指定するws2.が付いていたりいなかったりしたので省略してあります。 nRow1 = Rows.Count + 1 nRow2 = Rows.Count + 1 If Application.CountIf(Columns(c1), "○") > 0 Then   nRow1 = Columns(c1).Find(What:="○").Row End If If Application.CountIf(Columns(c1), "×") > 0 Then   nRow2 = Columns(c1).Find(What:="×").Row End If r1 = Application.WorksheetFunction.Min(nRow1, nRow2) If r1 = (Rows.Count + 1) Then MsgBox ("Hitなし")

kero1192kero
質問者

お礼

r1 = Application.WorksheetFunction.Min(nRow1, nRow2)の記述を自分の記述に合うように修正していけました。とても参考になりました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロ findを使用しての列番号検索

    いつも回答して頂き、とても感謝しています。 質問内容ですが、 FINDを使用して列番号を検索する時、FINDでセル位置を取り出し、そのセル位置を元に列番号を取り出しています。FINDの記述部分で列番号を検索するにはどうしたらよろしいのでしょうか?宜しくお願い致します。 Dim 項目1 As Range Dim c1 As Long If Application.CountIf(Rows(4), "みかん") = 1 Then Set 項目1 = ws2.Rows(4).Find(what:="みかん", LookIn:=xlValues, lookat:=xlWhole, _ SearchOrder:=xlByColumns, searchdirection:=xlPrevious) c1 = 項目1.Column End If

  • マクロエラ-

    初心者です。win2000,エクセルでマクロが途中で止まってしまいます。時々に、最後までいくことがありますが、8割がたは、同じところでストップします。 マクロ言語は理解できていません。 うまく完了のケ-スは、デ-タの中身次第かなと思います。 記憶では、”0”があれば、何かをするようにしたと思います。 想定外のデ-タで、とまるのなら、回避方法を教えてください。 黄色反転して、ストップする部分は、以下です。 mcr3 Range("A1").Select ActiveCell.SpecialCells(xlLastCell).Select Columns("C:C").Select Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate いつもここで止まります。 ActiveCell.Replace What:="0", Replacement:="", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False).Activate -----------→つずく。

  • Find関数がうまく動作しない

    エクセルで下記のData1のデータをData2の表に入れたいのですが、途中まではうまくデータが入るのですが、特に25がうまく認識されず認識が24のままデータが挿入されてしまいます。その後も認識されたり認識されなかったりと何故かがわかりません。どなたかヘルプお願いします。 Sheet(Data1) WK Data Attd 24 aaa 5 24 ddd 17 24 bbb 9 24 ccc 13 25 ddd 18 25 aaa 6 25 ccc 14 25 bbb 10 Sheet(Data2) WK→ 24 25 26 Data ↓ aaa 5 6 7 bbb 9 10 11 ccc 13 14 15 ddd 17 18 19 --------------------------------------------------------- Set Dsh = Worksheets("Data1") Set Ssh = Worksheets("Data2") Dsh.Select i = 3 r = Application.WorksheetFunction.CountA(Range("A3:A500")) Do While i < r Application.CutCopyMode = False Dsh.Select WK = (Dsh.Cells(i, 1).Value) Data = (Dsh.Cells(i, 2).Value) Attd = (Dsh.Cells(i, 3).Value) Ssh.Select Frow = Ssh.Cells.Find(what:=Data, LookIn:=xlValues, After:=Cells(2, 1), lookat:=xlWhole, searchorder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Row Wcol = Ssh.Cells.Find(what:=WK, LookIn:=xlValues, After:=Cells(2, 1), lookat:=xlWhole, searchorder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column Ssh.Cells(Frow, Wcol) = Attd i = i + 1 Loop

  • VBAのFINDのエラーを回避したいです。

    以下のようなものを作成しましたが、1シートでは、問題なく回るものの2シート目のmをFINDしているところでエラーが発生します。原因は、該当するmが存在しないためだと思うのですが、そのような場合にエラーを回避し、次のシートへ飛びエラーが発生したシート番号を最後に表示してほしいです。 そのようなことは可能でしょうか? 読みにくいプログラムかもしれませんが、よろしくお願いします。 Dim top, m, under, bottom, cnt, she Application.ScreenUpdating = False '画面固定 cnt = Sheets.Count 'シートの数 For she = 1 To cnt Sheets(she).Activate Columns("F:F").Select Selection.Find(What:="0", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False).Activate top = ActiveCell.Row - 1 Rows("1:" & Format(top)).Select Selection.Delete Shift:=xlUp Range("A1").Select m = Range("E1") + 10 If m >= 60 Then m = m - 60 Else m = m End If Columns("E:E").Select Selection.Find(What:=Format(m), After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False).Activate under = ActiveCell.Row bottom = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row - 1 Rows(Format(under) & ":" & Format(bottom)).Select Selection.Delete Shift:=xlUp Range("A1").Select Next she End Sub

  • エクセル VBA

    Dim h As Range If Application.CountIf(Range("p:p"), 5) = 0 Then Exit Sub Set h = Range("p:p").Find(what:=5, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious) Range(Range("p2"), h).EntireRow.Delete Shift:=xlShiftUp 上記のマクロは、「2行目から、P列の数値が5の最下の行までを削除する」という内容です。 この5の部分を、<0(0未満)に変えたいのですがわかりません。 どうぞ教えてください。

  • EXCEL マクロでの検索をお教えください

     下記のようなマクロを使いたいのですがこの場合×があるときは良いのですが、  無いときエラーが出ます。どの様にすれば良いのかお教えください。  無いときエラーは オブジェクト変数または With ブロック変数が設定されていません。  となります。 Sub 検索()    Range("K12:K70").Select    Cells.Find(What:="×", After:=ActiveCell, LookIn:= _    xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _    xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate End Sub

  • エクセルののマクロについて教えてください

    Sub search() Dim i As Long, lastCol As Long, c As Range, str As String, wS As Worksheet Set wS = Worksheets("sheet2") wS.Cells.Clear str = Application.InputBox("検索内容を入力") Application.ScreenUpdating = False With Worksheets("sheet1") lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column .Columns(lastCol + 1).Insert For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row Set c = Range(.Cells(i, "A"), .Cells(i, lastCol)).Find(what:=str, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then .Cells(i, lastCol + 1) = 1 End If Next i If WorksheetFunction.CountIf(.Columns(lastCol + 1), 1) > 0 Then .Range("A1").AutoFilter field:=lastCol + 1, Criteria1:=1 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy wS.Range("A1") wS.Columns.AutoFit wS.Columns(lastCol + 1).Delete wS.Activate .Columns(lastCol + 1).Delete .AutoFilterMode = False Else MsgBox "該当データなし" End If End With Application.ScreenUpdating = True End Sub エクセルで上のシステムをネットから持ってきました。 上から5行目のinputboxを"Sheet3"のA列からデータを持ってきてプルダウンで表示させたいのですがユーザーフォームでオブジェクトを組まないで表示させる方法を教えてください

  • Excel VBA Findで日付だけのセルが検索できない

    日付のセルを検索するために、以下のような処理をさせていますが、日付だけのセルが検索できません。  【例】(1)は検索できますが、(2)が検索されません。    (1) 2010/03/05が誕生日    (2) 2010/03/05    (※(1)、(2)共に検索できるようにしたいと思っています。) Dim FoundCell as Variant Dim search_words as String search_words = "20??/*/" Set FoundCell = Cells.Find(what:=search_words,After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False) ※Excel2003を使用しています。

  • マクロ 困っています

    いつも回答して頂き、感謝しています。 作りかけで全然出来ていないんですが、 下記の文のFINDの箇所でエラーが発生します。 原因が分からないので、どうしたら解消されるか教えて頂けないでしょうか? 宜しくお願い致します。 ちなみにFINDで検索している行の最初の列は下記の数式が入力されています。 =FLOOR(NOW(),"1:00") 隣の列から下記の式が入力されています。 =RC[-6]+TIME(1,0,0) セルの書式設定のユーザー定義で時間だけ表示するようにしています。 Option Explicit Sub スケジュール表作成() Dim 始点 As Date, 終点 As Date, 開始 As Date, 終了 As Date Dim 開始c As Integer, 終了c As Integer Dim ws1 As Worksheet, ws2 As Worksheet Set ws1 = Worksheets("スケジュール表") 始点 = ws1.Cells(3, 3).Value 終点 = ws1.Cells(3, 249).Value 開始 = Application.WorksheetFunction.Floor(ws1.Cells(10, 2), (1 / 24)) If 始点 <= 開始 And 開始 <= 終点 Then 開始c = ws1.Rows(3).Find(what:=開始, LookIn:=xlValues, lookat:=xlWhole, _ searchorder:=xlByColumns, searchdirection:=xlNext).Column End If End Sub

  • Findの使い方について教えてください

    資材算出のシートのD3の値をこのシートのJ1に貼り付け、J1の値をA5~A1000の間で完全一致で検索し、そのセルをアクティブにしたいのですが、検索がエラーが発生し上手くいきません。 Whatは文字の指定をしなければならなのでしょうか? 最終的には資材算出のD3の値を別のシートのA5~A1000の間で検索をかけたいです。 Private Sub CommandButton3_Click() worksheets("資材算出").Range("D3") = Range("J1") Range("A5:A1000").Find(What:=Range("J1") _ , After:=ActiveCell _ , LookIn:=xlValues _ , LookAt:=xlWhole _ , SearchOrder:=xlByColumns _ , SearchDirection:=xlNext _ , MatchCase:=False _ , MatchByte:=False _ , SearchFormat:=False).Activate End Sub よろしくお願いいたします。

パスワードを調べる方法
このQ&Aのポイント
  • ソフトウェアの更新をしたいが、パスワードがわからず進めない
  • Windows8.1で有線LAN接続をしている
  • ひかり回線を使用している
回答を見る

専門家に質問してみよう