重要なお知らせ

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

電子書籍の厳選無料作品が豊富!

こんにちは。

A列に日付
B列に数字(行数が大きいほど数字が若くなる)
C列に英数字
が入っています。

関数ではなくマクロを使って
B列の101の一番大きい行数の右隣(C列)を消したいのですが
(この場合は5行目のC列「WWW」を消したい)

複数ある同じ数値の中から
一番大きい行数を見つけて
その右隣のセルを消すためには

どのようにマクロを記述すれば出来るのでしょうか?

何卒よろしくお願いいたします。


A B C
1 11/8 102 ZZZ
2 11/8 101 AAA
3 11/8 101 BBB
4 11/8 101 AAA
5 11/8 101 WWW
6 11/8 100 BBB
7 11/8 099 AAA

「マクロを使って複数ある同じ数値の中から一」の質問画像

A 回答 (3件)

No.1です。

自分が言ってたもののサンプルはこんな感じ。
繰り返しの数は条件見えないので実環境では多すぎるかもけど。

Sub test()
Dim i As Long
Dim buf As String
For i = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(i, 2) = buf And Cells(i, 2) <> Cells(i + 1, 2) Then
Cells(i, 3).Clear
End If
buf = Cells(i, 2)
Next i
End Sub
    • good
    • 0
この回答へのお礼

何回もありがとうございます。
いま会社なので戻ってから試してみます
ありがとうございました!

お礼日時:2018/11/09 16:59

こんにちは



なさりたいことの本質がよくわかりませんが・・・
『検索の判断要素はひとつで、複数ヒットする場合は行番号が大きなものを選択したい』ということと解釈しました。

エクセルは表形状にデータが並んでいるので、
 ・検索対象範囲を取得したら
 ・行番号の大きなものから順に照合チェックして
 ・最初にヒットしたデータがお求めのものになります

>どのようにマクロを記述すれば出来るのでしょうか?
普通に順に検索するのと大して変わりはありません。
上記のように逆順でチェックする点が異なるだけ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
調べてみて試してみます

お礼日時:2018/11/09 17:00

やり方はいろいろあるでしょうけど、


ポイントは
・複数ないと処理しない
・数字は降順で必ず並んでいて、その最後の行を処理する
なので、
1.前の行と今の行は同じ値か(複数あるかの判定)
2.今の行と次の行は同じ値か(同値の最終行の判定)
を満たせば消す、という処理を繰り返せばいいかと思います。
    • good
    • 0

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