プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者です。
A列に下記の文字列があり、AAAをfindnextで検索後、
最新の追番のものを抽出したいのですが、どのように記述すればよろしいでしょうか?
AAA_A
AAA_B
AAA_C
BBB_A
BBB_B

この場合AAA_Cを見つけ出したいです

よろしくお願いします

質問者からの補足コメント

  • 情報不足してたようですいません...
    探したい文字列の後にアルファベットで、追番がついきます。
    AAAA_A
    AAAA_B
    AAAA_C
    といったようにつくのですが、Cが最新の文字列と考えたいのでAAAA_Cを
    別シートのセルに転記したいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/12/17 22:38
  • わかりずらくてすいません。

    AAAに設計変更が加わるとAAA_Aがつきます
    またAAA_Aに設計変更が加わるとAAA_Bとなります
    そのためZに近いアルファベットが最新となります。
    AAAの文字数は同一です。

    よろしくお願いします

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/12/17 23:09

A 回答 (3件)

「最新の追番」について、もう少し丁寧に説明して頂けないでしょうか?


それから「抽出」とは、どこか別のセルに転記するということでしょうか?
この回答への補足あり
    • good
    • 0

「Cを最新の文字列と考えたい」とは、どういう意味ですか?


例えば、A、B、Cを降順で並べ替えるとCが一番最上に来ますよね?一番上に来るものを最新と考えれば良いのでしょうか?
その場合、文字数が異なっていると思い通りの結果になるのかが心配なのですが・・・。
その辺、曖昧さが無いように「Cを最新の文字列と考えたい」の意味をご説明ください。
この回答への補足あり
    • good
    • 0

ExcelVBAのヘルプの使用例を元にサンプルを書いてみました。


こんな感じです。
Sheet2のA1セルに書き出してみました。

Sub sample()
Dim s As Variant
Dim c As Range
Dim firstAddress As String
With Worksheets("Sheet1").Range("A:A")
Set c = .Find("AAA", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If s < c.Value Then s = c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Worksheets("Sheet2").Range("A1").Value = s
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!