重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

【やりたい事】
以下の表aから表bのようにしたいです

A列に並んでいる、数値の内 -08、-09がついていれば削除。
ついていなければそのままにしたいです

マクロは、以下のように考えています
ご存じの方、ヒントやアドバイスを頂きたいです

宜しくお願いします

なお、以下のマクロステートメントでなくてもOKです

【表a】
123
456-08
789
111-09
222

※数値は3ケタか3ケタ プラス -08or-09しかないです
※並んでいる数値の個数は増えたり減ったりします

【表b】
123
456
789
111
222

【考えているマクロ】

lastrow2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row

For i = 2 To lastrow2

if -08 or -09  then '-08もしくは-09 が数値についていれば

-08 or -09 だけ削除


else '-08 or -09 無ければ

何もしない

End If

Next i

A 回答 (5件)

まあ、左3桁を採ればよいならイチイチif使わずに


WS2.Cells(i,1)=left(WS2.Cells(i,1),3))で済みますけどね
    • good
    • 0

こんにちは



以下でも可能と思います。

For Each c In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
t = Right(c.Text, 3)
If t = "-08" Or t = "-09" Then _
c.Value = Left(c.Text, Len(c.Text) - 3)
Next c
    • good
    • 1

常に最初の3文字を残せばいいんですよね。

それなら、No.1の回答のIf〜ThenとEnd Ifは無くていいです。あと、ActiveSheetしか見ないならシート指定は不要でしょう。Range("A" & i)よりCells(i, "A")の方がちょっぴり速くなります。
    • good
    • 1

シンプルにすべてのデータで「-08」や「-09」があれば置換ではどうでしょうか?



For i = 1 To 10←ここは処理する表aの範囲で任意に設定

st0 = 表aのCells(i, 1).Value
st1 = Replace(st0, "-08", "")
st1 = Replace(st0, "-09", "")
表bのCells(i, 1).Value = st0

Next
    • good
    • 2

lastrow2 = WS2.Cells(Rows.Count, "A").End(xlUp).Row



For i = 2 To lastrow2

If (Right(WS2.Range("A" & i).Value, 2) = "08") Or (Right(WS2.Range("A" & i).Value, 2) = "09") Then

WS2.Range("A" & i).Value = Left(WS2.Range("A" & i).Value, 3)

End If

Next i
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A