質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

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

Q&A

解決済

3回答

915閲覧

【VBA】重複行の削除について

jiaetakoga

総合スコア96

VBA

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

0グッド

0クリップ

投稿2020/03/31 05:19

編集2020/03/31 05:33

こんにちは。
以下の内容について教えてください。

【やりたいこと】
range("B1:F1")とrange("B2:F2")が重複していた場合は、
下にある行(この場合、2行目)のA列に〇を入れて、1行目の列を削除する。
RemoveDuplicatesはいきなり消えてしまい、ifが使用できないので、、、

VBA

1' range = range はエラー → 実行時エラー'13'型が一致しません 2 if (range("B1:F1") = range("B2:F2")) then 3 range("A2").value = "〇" 4 end if 5 6' range.value = range.value でもエラー → 実行時エラー'13'型が一致しません 7 if (range("B1:F1").value = range("B2:F2").value) then 8 range("A2").value = "〇" 9 end if

恐れ入りますが、重複行の照らし合わせ方を教えてください。

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

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

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

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

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

m.ts10806

2020/03/31 05:28

念のためエラーメッセージをそのままご提示ください。 また、実際のセルに何が入っているか、結果どのように出したいのか、例示してください。
nanami12

2020/03/31 05:37

上記コードでは、if分の所でコンパイルエラーとなるでしょう。 最低でも処理の部分を作るテクニックをご教授下さい とまで自分で進めましょう
guest

回答3

0

range("B1:F1") = range("B2:F2")

複数セルの複数の値と複数セルの複数の値をいきなり単純に比較はできません。
それぞれを文字列としてつなげて、1つの値にしてから比較してみてはいかがでしょう?

RemoveDuplicatesはいきなり消えてしまい、ifが使用できないので、、、

RemoveDuplicatesメソッドは必ず上の行が残るので、
1回逆順に並べなおしてから実行してはいかがでしょう?

Excel

1 [B] [C] [D] 2 [2] 1 あ 1 3 [3] 1 あ 2 4 [4] 2 あ 1 5 [5] 2 い 1 6 [6] 3 あ 1 7 [7] 4 い 2 8 [8] 5 あ 1 9 [9] 5 い 2

上のような表の時

ExcelVBA

1Sub test() 2 With ActiveSheet.Range("B2").CurrentRegion 3 .Columns(0).Formula = "=IF(CONCATENATE(B2,C2)=CONCATENATE(B1,C1),""○"","" "")" 4 .Columns(.Columns.Count + 1).Formula = "=Row()" 5 End With 6 With ActiveSheet.Range("B2").CurrentRegion 7 .Value = .Value 8 .Sort .Cells(1, .Columns.Count), xlDescending 9 .RemoveDuplicates Columns:=Array(2, 3) 10 .Sort .Cells(1, .Columns.Count), xlAscending 11 .Columns(1).Replace " ", "" 12 .Columns(.Columns.Count).ClearContents 13 End With 14End Sub

投稿2020/03/31 06:23

mattuwan

総合スコア2136

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

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

0

以下の記事がほぼ同じ質問なので参考になると思います。

・VBAマクロ セル範囲同士の比較
https://teratail.com/questions/30994

投稿2020/03/31 05:51

autumn_nsn

総合スコア335

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

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

0

ベストアンサー

地道に、

vba

1If range("B1") = range("B2") AND _ 2 range("C1") = range("C2") AND _ 3 range("D1") = range("D2") AND _ 4 range("E1") = range("E2") AND _ 5 range("F1") = range("F2") AND _ 6Then 7 range("A2").value = "〇" 8End If

これはちょっと分かりづらいかも

vba

1If Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Range("A1:F1").Value))) _ 2 = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Range("A2:F2").Value))) _ 3Then 4 range("A2").value = "〇" 5End If

ループを使うなら、

vba

1 Dim b As Boolean 2 Dim r As Range 3 4 b = True 5 For Each r In Range("B1:f1").Cells 6 If r <> r.Offset(1) Then 7 b = False 8 Exit For 9 End If 10 Next 11 If b Then Range("A2").Value = "〇"

投稿2020/03/31 05:47

編集2020/03/31 06:12
hatena19

総合スコア33782

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問