0

シート 1 列 A には次の値があります (約 3000 レコードあります。以下のサンプル値を示します)。特定のテキストの最後の値を見つける必要があります。

RVT-01
RVT-02
RVT-03
RVT-04
RVT-05
RVT-06
RHT-01
RHT-02
RHT-03
RHT-04
RHT-05
ROI-01
ROI-02
ROI-03
SWO-01
SWO-02
SWO-03
SOR-01
SOR-02
SOR-03
SOR-04
SOR-05
SOR-06
SOR-07

VBA コードの使用

に short tex を入力 した場合、 のsheet1.cells(2,2) = SWO最後の値が必要です を入力 した場合、 の最後の値が必要です を入力した場合 、 の最後の値が必要ですsheet1.cells(2,4)=SWO-03
sheet1.cells(2,2) = RHTsheet1.cells(2,4)=RHT-05
sheet1.cells(2,2) = RVTsheet1.cells(2,4)=RVT-06
sheet1.cells(2,2) = SORsheet1.cells(2,4)=SOR-07

上記のプロセスの VBA コードは何ですか?

4

1 に答える 1

1

Skip Introが示唆したように、 VBA は必要ありません。列 B に、次のような式を入力します。

  1. =IF(IF(LEFT(A1,3)=LEFT(A2,3),1,0)=0,RIGHT(TRIM(A:A),2),"")(最大数を取得するため):

また

  1. =IF(IF(LEFT(A1,3)=LEFT(A2,3),1,0)=0,A:A,"")(セルの完全な内容を取得するため)

どちらも最高値を示します。次に、その列をオートフィルターして、空白と出来上がりを非表示にすることができます:)

または

=IF(IF(LEFT($A1,3)=LEFT($A2,3),1,0)=0,NA(),"")

以下のように、VBA で SpecialCells を使用して、各グループの最大値を調べることができる範囲を取得できます。

Sub test()

    Dim rng As Range
    Dim cell

    Range("B1:B" & Range("A65536").End(xlUp).Row).Formula = "=IF(IF(LEFT($A1,3)=LEFT($A2,3),1,0)=0,NA(),"""")"
    Set rng = Range(Range("B1:B" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlErrors).Offset(0, -1).Address)

    For Each cell In rng
        Debug.Print cell.Address & " =" & cell.Value
        MsgBox cell.Address & " =" & cell.Value
    Next
End Sub

SpecialCells マジック トリックの詳細については、「Excel VBA でループせずに複数の行を削除する方法」を参照してください。

于 2013-03-25T14:33:38.477 に答える