こんにちは。
Do Until ~ Loop 構文で
空白セルまでループして重複する値をチェックしたいと考えています。
---------------------------------------------
Sub 重複チェック()
Dim 検索語 As String
Dim 該当数 As Long
Dim 確認 As Integer
Range("A4").Activate
Do Until ActiveCell.Value = ""
検索語 = ActiveCell.Value
該当数 = WorksheetFunction.CountIf(Range("A:A"), 検索語)
If 該当数 >= 2 Then
ActiveCell.AutoFilter Field:=1, Criteria1:=検索語
確認 = MsgBox("次を検索しますか?", vbYesNo)
If 確認 = vbNo Then Exit Sub
End If
ActiveCell.Offset(1, 0).Activate
Loop
Range("A4").AutoFilter
MsgBox "名前の重複チェックが終了しました。"
End Sub
---------------------------------------------
ただセルA列には行の途中、空白も含まれているため、
途中で止まってしまいます。
今後A列にはデータが追加されていきます。
途中の空白セルを飛ばして、
データーの最後までチェックするにはどのようにすればよいでしょうか?
No.6ベストアンサー
- 回答日時:
> 以降空白4列下のセルで動作が終了するのはどうしてでしょうか?
失礼しました。
開始が4行目のセルだということを失念していました。
Sub 重複チェック()
Dim 検索語 As String
Dim 該当数 As Long
Dim 確認 As Integer
Dim x As Long, n As Long
x = ActiveSheet.Cells(65536, "A").End(xlUp).Row '最終行取得
For n = 4 To x '最終行まで検索
Cells(n, 1).Activate
検索語 = ActiveCell.Value
該当数 = WorksheetFunction.CountIf(Range("A:A"), 検索語)
If 該当数 >= 2 And 検索語 <> "" Then
ActiveCell.AutoFilter Field:=1, Criteria1:=検索語
確認 = MsgBox("次を検索しますか?", vbYesNo)
If 確認 = vbNo Then Exit Sub
End If
Next n
Range("A4").AutoFilter
MsgBox "名前の重複チェックが終了しました。"
End Sub
merlionXXさま
ご丁寧にありがとうございます。
このままコピーで使用できますね(笑)
お忙しいところ
ありがとうございました!!
No.4
- 回答日時:
異なる方法ですが、findメソッドを使えば、最終行取得不要、かつ、データ行数が増えても高速検索ができます。
(ループ部分のみの例です)
With ActiveSheet.Range("A:A")
Do
Set c = .Find(検索語, After:=ActiveCell, LookIn:=xlValues)
'検索の繰り返しを判定
If Range(c.Address).Row <= a Then Exit Sub
'検索条件セルの除外
If Range(c.Address).Row = 4 Then GoTo AA:
a = Range(c.Address).Row
Range(c.Address).Select
確認 = MsgBox("次を検索しますか?", vbYesNo)
If 確認 = vbNo Then
Set c = Nothing
Exit Sub
End If
AA:
Loop Until c Is Nothing
End With
TTakさま
ご回答ありがとうございます。
空白セルもカウントされてしまいました・・・
この構文は今後の勉強とさせていただきます。
ありがとうございました!
No.3
- 回答日時:
No2です。
データがA列ときまっているのでしたらWith ActiveSheet.UsedRange
x = .Cells(.Count).Row '最終行取得
End With
なんてまだるっこいことをしなくても
x = ActiveSheet.Cells(65536, "A").End(xlUp).Row
で最終行取得できましたね。
こっちでやってみてください。
ご回答ありがとうございます!
スムーズに動作するようになりましたが、
空白セルもカウントするようです。
データが入っているセルの
以降空白4列下のセルで動作が終了するのは
どうしてでしょうか?
No.2
- 回答日時:
With ActiveSheet.UsedRange
x = .Cells(.Count).Row '最終行取得
End With
Do Until ActiveCell.Value = "" を For n = 1 to x'最終行まで検索
Loop を Next n
に書き換えると、空白があろうがなかろうが、データの最終行まで検索します。
No.1
- 回答日時:
Do Until ActiveCell.Value = "" を For I = 1 to 65536
Loop を Next I
に書き換えると、空白があろうがなかろうが、ワークシートの全行を見ることになり、重複する値をチェックできるかと思います。(試していません)
ただ、実行させてから終了まで、すごい時間が掛かると思います。
(試す前に一度データをバックアップとって下さい)
それか、
Do Until ActiveCell.Value = "" を Do Until ActiveCell.Value = "END"
にして、明らかにこの行から下にはデータがないA列のセルに「END」を入れておく方法くらいしか思いつきません。
ご回答ありがとうございます。
これですとデータの最後以降も
空白セルをチェックをし「次を検索しますか?」のメッセージが
何度も出てきてしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) ワークブック内すべて検索 2 2022/12/20 20:13
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
Excel VBAでセルの空白が3連続するまで繰り返し処理を続行したい
Excel(エクセル)
-
エクセルマクロ 【空白セルを無視する方法を教えてください】
Excel(エクセル)
-
-
4
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
5
exeファイルの中身を見ることは可能ですか?
フリーソフト
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
数式による空白を無視して最終...
-
エクセルでCSVを編集するとき、...
-
関数TRANSPOSEで空白セルを0に...
-
エクセル 連番が途切れていると...
-
エクセルで上の行の値を自動的...
-
Excel > ピボットテーブル「(空...
-
「データ要素を線で結ぶ」がチ...
-
【Excel】 csvの作成時、空白セ...
-
Excelで、入力文字の後に自動で...
-
エクセル、AVERAGEIFSに関して
-
【Excel】 Ctrl+方向キー で空...
-
ピボットテーブルで空白セルの...
-
色つき行の一括削除は?
-
vlookup にて、返す値が、空白...
-
SUMIFS関数で「計算式による空...
-
EXCELのオートフィルタで空白セ...
-
VBA スペースが入力されて...
-
Excel:関数が入っているセルに...
-
エクセルで、「複数のセルの中...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
数式による空白を無視して最終...
-
エクセルでCSVを編集するとき、...
-
Excel > ピボットテーブル「(空...
-
「データ要素を線で結ぶ」がチ...
-
ピボットテーブルで空白セルの...
-
関数TRANSPOSEで空白セルを0に...
-
空白セル内の数式を残したまま...
-
excel2010 空白セルにのみ貼り...
-
エクセル 連番が途切れていると...
-
Excel:関数が入っているセルに...
-
Excelで、入力文字の後に自動で...
-
《Excel2000》SUMPRODUCT関数で...
-
SUMIFS関数で「計算式による空...
-
形式貼り付けの「空白を無視す...
-
エクセルで数式の入ったセルの...
-
【Excel】 csvの作成時、空白セ...
-
エクセルで、「複数のセルの中...
-
エクセルで上の行の値を自動的...
-
空白を0とみなす関数
おすすめ情報