🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1084閲覧

複数の列を参照して重複する行を削除したい

OugaiMori

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/01/02 12:10

BからC列で重複している行を削除したいです。
ただし、B列とC列を見て、

|A列|B列 |C列
|027|みかん|東京都墨田区|
|151|みかん|東京都墨田区|重複
|022|りんご|東京都台東区|
|192|りんご|東京都台東区|重複
|839|りんご|東京都新宿区|
|203|みかん|東京都大田区|
|490|りんご|東京都大田区|
|009|みかん|東京都大田区|重複
|228|りんご|東京都大田区|重複

重複となっている行を

|027|みかん|東京都墨田区|
|022|りんご|東京都台東区|
|839|りんご|東京都新宿区|
|203|みかん|東京都大田区|
|490|りんご|東京都大田区|

となるように消去したいです。
A列の値は見ずに、B列とC列が重複する場合
行ごと削除したいです。

vba

1Worksheets(1).Range("A:D").RemoveDuplicates Columns:=Array(2, 3), Header:=xlYes

上記のコードで実行すると、
一番下のA列だけ値が残ってしまいました。

ご助力いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/01/02 13:09

・excelの話ですか?(OS、バージョン等質問に追記してください) ・コードの実行結果も教えてください。(質問に追記してください)
hatena19

2020/01/03 01:50

呈示のデータとコードで試してみましたが、想定通りの結果になりました。 呈示されていない情報があると思います。再現できる情報を提示してください。
OugaiMori

2020/01/07 02:02

仰って頂いた通り、問題なく実行できました。 ただ、今あるデータよりも少ないデータを値貼り付けして 実行したときに事象を確認しました。
guest

回答2

0

ベストアンサー

ExcelVBA

1Sub Macro1() 2 ActiveSheet.Range("$A$1").CurrentRegion.RemoveDuplicates Columns:=Array(2, 3), Header:=xlGuess 3End Sub

表がA1セルから始まっているのか解らないし、
タイトル行があるのかないのかもわからないですし、

>一番下のA列だけ値が残ってしまいました。

ということになること自体もなぜかわかりませんが、
上記でいいと思います。

うまくいかないなら、
対象となるセル範囲を正しく教えてください。
(正しく言葉に出来てないから、エクセル君に伝わらないし、
回答者にも伝わらないのです。
まずは日本語で回答者に伝えてみてください。)

投稿2020/01/06 08:41

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OugaiMori

2020/01/07 01:58

ご回答ありがとうございます。 前提情報の提示が不足しており、申し訳ございませんでした。 仰って頂いた通り、基本的には問題なく動きました。 また、質問した事象が発生する状況もわかりました。 例えば、10行のデータがあったとし、それよりも少ない行数のデータ 5行のデータを値貼り付けしたときに、上記のような現象が確認できました。 コードはこれだけではないので、もしかしたら他のコードが原因かもしれません。 自分で調べて、正しい言葉で質問してみたいと思います。 ご回答ありがとうございました。
guest

0

D列にキーを作成し、D列の重複を判定して削除するやり方はどうでしょうか。
例えば、2行目以降がデータの場合、セルD2に「=B2&C2」を入力。
その後はオートフィルでD列を完成させ、D列で重複判定する方法です。

投稿2020/01/02 14:15

TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OugaiMori

2020/01/07 01:53

ご回答ありがとうございます。 ご連絡が遅くなり、申し訳ございませんでした。 関数での判定法についても、調べてみた方法と少し異なっていたので 参考になりました。ただ、今回はVBAで完結させてみたいと思い、 質問いたしました。 ご丁寧にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問