[[20180601182217]] 『初めて値がXXを超えた行を返す(VBA)』(たろり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『初めて値がXXを超えた行を返す(VBA)』(たろり)

初心者です。
VBAで、初めて値がXXを下回った(超えた)行を返したいと思っています。

データは以下で、例えばこの中で、
上から順に判定して、初めて-300を下回った行を取得したい考えです。
このあたり(https://oshiete.goo.ne.jp/qa/5229028.html)を参考にしながら、
indexやminやらを組合せてみましたが、どうもうまくいきませんでした。
何か良い方法がありましたら、ご教示いただければと思います。
恐れ入りますが、アドバイスのほど、どうぞよろしくお願いいたします。

  A
1 0
2 -22
3 0
4 0
5 0
6 -520
7 -800
8 -204
9 -320
10 -2

< 使用 Excel:Excel2016、使用 OS:Windows7 >


回答ではありません。
表題の(VBA)の意味は?
間違いでしょうか。

(マナ) 2018/06/01(金) 18:46


検索してみて、わたしが一番わかりやすかったのは
=MATCH(1,INDEX((A:A<-300)*1,0),0)

(マナ) 2018/06/01(金) 20:09


マナさま、ご回答ありがとうございました。助かります。

参考にさせて頂いて、以下のような形で、書いてみたのですが、
型が一致しませんと、エラーが返ってきてしまいました。
変数型の問題でしょうか、少しさわってみたのですが解決できず
続いてご教示頂けますと幸いです。
どうぞよろしくお願いいたします。

Dim i As Long
Dim RowNum As Long

RowNum = Cells(Rows.Count, 1).End(xlUp).Row
i = Application.WorksheetFunction.Match(1, Application.WorksheetFunction.Index((Range("A2:A" & RowNum) < -300) * 1, 0), 0)

(たろり) 2018/06/04(月) 15:45


 以下ではどうだろうか?
 Sub a()
    Dim i   As Long
    i = 1
    Do Until Range("A1").Offset(i - 1, 0).Value < -500
        i = i + 1
    Loop
    MsgBox i
 End Sub

(ねむねむ) 2018/06/04(月) 16:37


失礼しました。表題は間違いではなかったのですね。

難しく考えないで、上から順番に判定していけばよいです。
わたしの場合、Do〜Loopは苦手なので
できるだけFor〜Nextを使います。

 Sub test()
    Dim i As Long
    Dim RowNum As Long

    RowNum = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 1 To RowNum
        If Cells(i, 1).Value < ー300 Then Exit For
    Next

    If i > RowNum Then
        MsgBox "なし"
    Else
        MsgBox i
    End If

 End Sub

(マナ) 2018/06/04(月) 19:38


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.