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

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

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

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

Q&A

解決済

3回答

1411閲覧

【VBA】ソートしたA列から特定の値をIF文で見つけ、違う値が出てきたら処理を終わらせたい

arumikann

総合スコア5

VBA

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

0グッド

0クリップ

投稿2021/02/09 05:43

編集2021/02/09 05:45

こんにちは。
エクセルVBAにて以下の機能を実装しております。

〇表
A     B     C
100   1     あ
100   2     い
101   3     う
101   4     え
102   5     お
102   6     か

〇機能
IF文とFOR文にて
A列に特定の値(今回は101)が存在する場合
その行のデータ(今回は3、う と 4、え)を取得する。

〇コード

VBA

1Dim A As String 2A = "101" 3 4For i = 1 To MaxRow 5 If Cells(i, 1) = A Then 6 ~~~~ 7 Endif 8Next i

〇質問
現状は最下行を取得し全行に対し「101かどうか」の判定を行っております。
ソートされた表のため、101の次の行が別の値や空欄となった場合
そこでFOR文を抜ける(Exit For)方法について
ご教示をお願い致します。

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

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

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

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

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

guest

回答3

0

ちょっと変化球ですが。

VBA

1Dim A As String 2A = "101" 3 4Dim c As Long, m As Long, r As Range 5c = WorksheetFunction.CountIf(Columns(1), A) 'いくつあるかをカウント 6If c > 0 Then 7 m = WorksheetFunction.Match(A, Columns(1), False) '最初に登場する行番号を見つける 8 For Each r In Cells(m, 1).Resize(c) 'm行目からcセル分の範囲でループ 9 Debug.Print r.Offset(, 1), r.Offset(, 2) 10 Next 11End If 12

投稿2021/02/09 07:48

jinoji

総合スコア4592

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

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

arumikann

2021/03/17 05:33

回答ありがとうございました! 検索範囲をあらかじめ絞るという方法もあるのですね・・・。 別の機会にて活用してみたいと思います! 評価が遅くなり大変申し訳ございません・・・。
guest

0

なんらかの形でフラグ持たせて条件判定でいいんじゃないですかね。

VBA

1'Boolean型の初期値はFalse 2Dim Checker As Boolean 3 4For i = 1 To MaxRow 5 If Cells(i, 1) = A Then 6 '~~~~ 7 Checker = True 8 ElseIf Checker = True Then 9 Exit For 10 End If 11Next i

投稿2021/02/09 06:05

編集2021/02/09 06:13
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

arumikann

2021/03/17 05:32

回答ありがとうございました! フラグを持たせるという方法を知ることができ勉強となりました。 評価が遅くなり大変申し訳ございません・・・。
guest

0

ベストアンサー

Aにあたればjを1にして、Aを抜けてjが1ならExitしてます。

vba

1Dim j As Long 2j=0 3 4For i = 1 To MaxRow 5 If Cells(i, 1) = A Then 6 '~~~~ 7 j = 1 8 ElseIf j = 1 Then 9 Exit For 10 End If 11Next i

投稿2021/02/09 06:01

編集2021/02/09 06:29
radames1000

総合スコア1925

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

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

radames1000

2021/02/09 06:49

低評価の方、理由を教えていただけたら幸いです。 MaxRowの部分は修正しましたが、それ以外にあれば。
arumikann

2021/03/17 05:31

回答ありがとうございました! 最も早くご回答いただきましたため ベストアンサーとさせて頂きます! おかげさまで想定通りの機能が実装できました。 また、返答が遅くなり大変申し訳ございません・・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問