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

RemoveDuplicatesメソッドについて教えてください。

シート1にシート2から値をもってくるようにしています。
シート1セルが下のようになっています。

A1 =INDEX(Sheet2!A:A,1)
A2 =INDEX(Sheet2!A:A,2)
A3 =INDEX(Sheet2!A:A,3)

B1 =INDEX(Sheet2!B:B,1)
B2 =INDEX(Sheet2!B:B,2)
B3 =INDEX(Sheet2!B:B,3)

この関数が入った状態で、

WorkSheet(1).Range("A:B").RemoveDuplicates Columns:=1, Header:=xlYes
を起動し、Aが重複する場合は行を削除します。

A1とA2が重複していて
RemoveDuplicatesメソッドで2行目が削除されたとします。

削除された直後、A2セルには
=INDEX(Sheet2!A:A,2)、もしくは
=INDEX(Sheet2!A:A,3)
のどちらが入っているのでしょう。。

うまくいくのでしょうか。

また、行数はそのときによってまちまちなのですが、全ての行を対象にしているので、範囲指定で問題になることはないと考えてよいでしょうか。

A 回答 (1件)

こんばんは



同じ様なことを何度も質問なさっているようですが・・・

https://oshiete.goo.ne.jp/qa/13371314.html
(↑)にも書きましたように、試してみた方が早いです。

ちなみに
>A1 =INDEX(Sheet2!A:A,1)
>A2 =INDEX(Sheet2!A:A,2)
のような、直接指定の関数式であれば、そのまま変わることはありません。
ただし、この関数式をシートに入力するのは、それなりに面倒なのではないでしょうか?

>行数はそのときによってまちまちなのですが~~
VBAで処理しているのならば、最終行を調べれば良いだけの話と思いますけれど・・
調べるのすら面倒なら、UsedRangeとかでも大分範囲は絞れるものと思います。


実際に何をなさりたいのか不明ですけれど、関数を残す必要が無いのであれば(重複削除なので、多分、値が変わることに対応する必要は無いものと推測)、直接値を転記して重複削除するのが簡単でしょう。
(前回回答にも書いたので、説明や例は省略。)
    • good
    • 0
この回答へのお礼

こんばんは
回答ありがとうございます_(._.)_

いろんなかたに回答をいただくことで勉強になることがたくさんあり、似たような質問をしています。
勉強になります。
ご指摘の通りです。
いつもありがとうございます。

お礼日時:2023/02/28 23:18

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