EXCELのVBAです。


(1)H列にあるデータのうち、文字列「aaa」に一致する行番号を取得

(2)H列にあるデータのうち、文字列「aaa」に一致するセル番地を取得

以上です。

以上の2つのコードが書ける方のみ、ご回答ください。

回答の条件
  • 1人5回まで
  • 登録:2006/06/14 01:36:52
  • 終了:2006/06/14 01:49:38

ベストアンサー

id:gong1971 No.1

gong1971回答回数443ベストアンサー獲得回数682006/06/14 01:45:55

ポイント60pt

両方同時に求めてます。不要な方は削除すればOKです。

((1)rs.Row / (2)rs.Address)ついでに総数も求めてみました。

(行番号とセル番地は一致する数だけ表示し最後に総数を表示)

結果は Debug.Print でイミディエイトウィンドウに出力しています。

参考までに範囲内に1つしか無いという前提であれば、Macro2を使用してください。

Sub Macro1()
    
    Dim rs As Range
    Dim tr As Long
    Dim i As Integer
    
    Set rs = Columns("H:H").Find(What:="aaa", LookIn:=xlValues, LookAt:=xlWhole)
    Do Until rs Is Nothing
        rs.Activate
        i = i + 1
        tr = rs.Row
        Debug.Print rs.Row; rs.Address 'ここで出力
        Set rs = Columns("H:H").FindNext(After:=ActiveCell)
        If rs.Row < tr Then Exit Do
    Loop
    Debug.Print "総数:" & i 'ここで出力
    
End Sub
Sub Macro2()
    
    Dim rs As Range
    
    Set rs = Columns("H:H").Find(What:="aaa", LookIn:=xlValues, LookAt:=xlWhole)
    If Not rs Is Nothing Then
        Debug.Print rs.Row; rs.Address 'ここで出力
    End If
    
End Sub
id:kitatom

最初の質問にBugがありました。失礼しました。ご回答ありがとうございました。完璧です。

2006/06/14 01:49:19
  • id:mitou73
    終了したようですが、せっかくなので。
    MsgBoxに出力してますが、お好きなように。

    Sub main()
    With Worksheets("Sheet1").Range("H:H")
    Dim iRow As Integer
    iRow = 1
    Do Until .Cells(iRow, 1).Value = "aaa"
    iRow = iRow + 1
    Loop
    MsgBox "行番号:" & CStr(iRow) & vbLf & "アドレス:" & .Cells(iRow, 1).Address
    End With
    End Sub

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません