[[20150515144309]] 『特定の文字列が書かれた行を最終行まで取得』(シューヘイ) ページの最後に飛ぶ

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

 

『特定の文字列が書かれた行を最終行まで取得』(シューヘイ)

特定の文字列が書かれた行を最終行まで取得したいのですがどうすればよいでしょう・・・。
A列のセルにRが含まれればこの列で検索をかけ、含まれなければこの列で検索をかけるというコードを記述してます

A6のセルにRが含まれるかどうかは出来たんですがA7、A8・・・にも文字列があれば下に下に取得したいと思ってます。どなたかお助け願います

If InStr("A6", "R") > 0 Then

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


いや、それだと"A6"という文字に"R"が含まれるか、という意味だから、間違いかと。
含まれている場合はB列を○にする例。

 Sub test()
    Dim i As Long

    For i = 6 To Cells(Rows.Count, "A").End(xlUp).Row
        If 0 < InStr(Cells(i, "A").Value, "R") Then
            Cells(i, "B").Value = "○"
        End If
    Next i
 End Sub
(???) 2015/05/15(金) 14:53

>???さん 回答ありがとうございます

A6にRが含まれていた場合はうまくいくんですが、それ以降(A7〜)がうまくいきません・・・。というのはA7からはA6と同じ処理?しかしてくれない状態です。例えばA7にRが含まれてなくても含まれた方の処理しかしてくれないということです。説明が下手なのでうまく伝わっているか不安ですがどうか宜しくお願いします。

(シューヘイ) 2015/05/15(金) 15:12


私の書いたサンプルを動かした上で、A6しかうまくいかないとおっしゃってますか?
実際にA列の内容を数行コピペして、ここに提示できますか?
実は7行目以降は、全角のRだったり小文字だったりしませんか?(これだと処理しないから、現象が違うか…)
(???) 2015/05/15(金) 15:23

>???さん すみません、私の作成した既存のコードと合わせているので、もしかするとその段階で私のやり方がおかしいのかもしれません。もう一度見直してみます

A列の内容一部です。
20-13-R1-00
20-14-R1-00
20-14-A1-00
20-15-A1-00

(シューヘイ) 2015/05/15(金) 15:32


Rをひとつでも見つけたら何かする、というように直したのであれば、発見後は Exit For してみてください。
サンプルでは、全部の行を処理するように書きましたので、途中抜けしませんでした。
(???) 2015/05/15(金) 15:46

 Find methodで
 何をしたいのかわからないので、とりあえずSelect
 Sub test()
    Dim r As Range
    Set r = Columns("a").Find("r", [a1], , , , 2)
    If Not r Is Nothing Then r.Select
End Sub
(seiya) 2015/05/15(金) 16:53

>???さん ありがとうございます!

何度もすみません。左から7番目の文字列がRなら、という条件を付けることは可能でしょうか?

>seiyaさん ありがとうございます!
一度試してみますね。
(シューヘイ) 2015/05/15(金) 17:07


文字位置固定ならば、以下。

        If Mid(Cells(i, "A").Value, 7, 1) = "R" Then
(???) 2015/05/15(金) 17:14

 左から7番目

 Sub test()
    Dim r As Range
    Set r = Columns("a").Find("??????r*", [a1], , 1, , 2)
    If Not r Is Nothing Then r.Select
End Su
(seiya) 2015/05/15(金) 18:16

 特定の文字列が書かれた行を最終行まで取得.....
 勘違いしている感じ,,,

 最終行だけ取得するのかと...

 Sub test()
    Dim x
    With Range("a1", Range("a" & Rows.Count).End(xlUp))
        x = Filter(Evaluate("transpose(if(mid(" & .Address & ",7,1)=""r""," & _
        "address(row(" & .Address & "),1,4),char(2)))"), Chr(2), 0)
        If UBound(x) > -1 Then
            MsgBox Join(x, vbLf)
        Else
            MsgBox "無し"
        End If
    End With
End Sub
(seiya) 2015/05/15(金) 18:40

 Autofilter?
 Sub test()
    Range("a1", Range("a" & Rows.Count).End(xlUp)).AutoFilter 1, "??????r*"
End Sub
(seiya) 2015/05/15(金) 18:51

コメント返信:

[ 一覧(最新更新順) ]


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