[[20160113153229]] 『ある範囲内に特定の文字列があれば行番号を取得』(祥子) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ある範囲内に特定の文字列があれば行番号を取得』(祥子)

したいです。
「Sheet2」にのA列に"AA"という文字列が有れば、その文字列があるセルの行番号を取得したいです。
やり方を教えてください。お願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


こんにちは

マクロですか?

知るだけなら、Sheet2のA列選択してCtrl+Fで「AA」を検索。
オプションで「セル内容が完全に同一〜」
全て検索で、一致するセルアドレスが表示されますので行番号も分かります。

どのように取得したいのでしょうか?

(ウッシ) 2016/01/13(水) 15:37


 ワークシート関数の場合。
 Sheet2のA列内に「AA」という文字が一つだけの場合、または複数ある場合に一番上のものの行番号を返す場合。

 =MATCH("AA",A:A,0)

 もし、別のシートに式を入れる場合は
 =MATCH("AA",Sheet2!A:A,0)

(ねむねむ) 2016/01/13(水) 15:39


マクロの場合なぞ。

 Sub test()
    Dim i As Long

    With Sheets("Sheet2")
        For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
            If 0 < InStr(.Cells(i, "A").Value, "AA") Then
                MsgBox i & "行目"
                Exit For
            End If
        Next i
    End With
 End Sub
(???) 2016/01/13(水) 15:41

ありがとうございます
基に作成してみたのですが、

            With Sheets("sheet2")
                For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
                    If 0 < InStr(.Cells(i, "A").Value, sheet2) Then
                        Exit For
                    Else
                        i = i + 1
                        sheet2.Cells(i, 1).End(xlUp).Offset(1, 0) = sheet2
                    End If

                Next i

            End With

(sheet2という変数があります)
For i = 1 To 〜 が終わったあと、最終行?のiを使って

i = i + 1
sheet2.Cells(i, 1).End(xlUp).Offset(1, 0) = sheet2

としたいのですが、i=1とか2のときにこの処理がきてしまって、
その前に入っていた文字の上にかぶってしまいます。
どこに置き換えたら良いですかね・・・?
(祥子) 2016/01/13(水) 16:08


もしかして、午前中に、末尾に○追加する方法を質問した方ですか?
私が回答付けていたのに、勝手に消さないで下さいよ。貴方に私の書き込みまで消す権利は無いですから。
基本的に、Webの掲示板は、一度書いたものは消しては駄目です。

あと、Sheet2という変数名は使っては駄目です。SHeet2というシート名が存在する場合、それはオブジェクト名ですから。
(とりあえず、そのままコーディングしておきますが、別名にしておいてください)

    With Sheets("Sheet2")
        For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
            If 0 < InStr(.Cells(i, "A").Value, Sheet2) Then
                .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Sheet2
                Exit For
            End If
        Next i
    End With

で、このままだとA列末尾に検索した文字列が増えていきますが、それは望んだ結果では無いですよね?
見つかった後は、どのセルにどういう値を代入したいのか、はっきりしてください。
(???) 2016/01/13(水) 16:27


ありがとうございます。

全文検索で似たような記事がないか検索はかけたんですが・・・同じような質問があったのでしょうか?すみません
あっシート名を変数に使ってはだめなんですね。確かに紛らわしいですよね。ありがとうございます。

最後にどういう処理をするかはまだ決まっていなくて、明日になればわかるんですが、先にある程度作っておきたかったのです。
増えていく件については、Exit Forの前に変数をおいて"1"という数値を入れて、
end withのあとで、その変数の"1"と入っていれば文字列を入れる。という風に書き換えています。
他に良いやり方があるかもしれませんが・・・
(祥子) 2016/01/13(水) 18:08


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.