Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11463 / 13645 ツリー ←次へ | 前へ→

【15935】意図したデータの先頭行番号の取得について おっちゃん 04/7/12(月) 18:56 質問[未読]
【15936】Re:意図したデータの先頭行番号の取得につ... ichinose 04/7/12(月) 20:11 回答[未読]
【15937】Re:意図したデータの先頭行番号の取得に... IROC 04/7/12(月) 20:17 回答[未読]
【15953】Re:意図したデータの先頭行番号の取得につ... おっちゃん 04/7/13(火) 12:32 お礼[未読]
【15954】Re:意図したデータの先頭行番号の取得につ... IROC 04/7/13(火) 12:57 回答[未読]
【15957】Re:意図したデータの先頭行番号の取得につ... おっちゃん 04/7/13(火) 15:11 お礼[未読]

【15935】意図したデータの先頭行番号の取得につい...
質問  おっちゃん  - 04/7/12(月) 18:56 -

引用なし
パスワード
   先程質問させてもらったおっちゃんです。

こんなデータがあると仮定します。

     A列   B列
行番号1 みかん   0
行番号2 りんご   0
行番号3 バナナ  10
行番号4 ぶどう  13
行番号5 なし   17
 ・    ・    ・

のようにB列で並び変えてあります。
ここでB列を検索して数値が1以上のもの、つまりバナナの行番号3
を取得したいのです。

よろしくご教授下さい。

【15936】Re:意図したデータの先頭行番号の取得に...
回答  ichinose  - 04/7/12(月) 20:11 -

引用なし
パスワード
   ▼おっちゃん さん:
こんばんは。

>先程質問させてもらったおっちゃんです。
>
>こんなデータがあると仮定します。
>
>     A列   B列
>行番号1 みかん   0
>行番号2 りんご   0
>行番号3 バナナ  10
>行番号4 ぶどう  13
>行番号5 なし   17
> ・    ・    ・
>
>のようにB列で並び変えてあります。
>ここでB列を検索して数値が1以上のもの、つまりバナナの行番号3
>を取得したいのです。
>
>よろしくご教授下さい。
数式で可能ですが、VBAで数式を組み立てました。
'=================================================
Sub test()
  Dim ans_row As Long
  Dim rng_A As String
  rng_A = Range("a1", Cells(Rows.Count, 1).End(xlUp)).Offset(0, 1).Address
  ans_row = Evaluate("min(if(" & rng_A & ">0,row(" & rng_A & ")))")
  MsgBox ans_row & "行目"
End Sub

例題のようなデータがあるシートをアクティブにしてマクロを実行してみて下さい。

【15937】Re:意図したデータの先頭行番号の取得に...
回答  IROC  - 04/7/12(月) 20:17 -

引用なし
パスワード
   データの件数が少ないようであれば
For〜Next でループするのが簡単です。


B列の数値は、全角のようですが文字列ですか?
もし数値であれば、

Sub sample()
Dim i As Long

  For i = 1 To Range("B65536").End(xlUp).Row
    If Cells(i, 2).Value >= 1 Then
      MsgBox i & " 行目が 1 以上です。"
      Exit Sub
    End If
  Next i

  MsgBox "1以上はありませんでした。"
End Sub

【15953】Re:意図したデータの先頭行番号の取得に...
お礼  おっちゃん  - 04/7/13(火) 12:32 -

引用なし
パスワード
   ichinose さん、IROC さん ありがとうございました。

今考えてみれば、IROCさんの方法が私にとってはズバリでした。
ichinoseさんの方法は今HELP等を参照して解読しています。

ちょっと思ったんですが、この処理はデータ数が2000位を想定しています。
このとき、For 〜 Next で回したときと、関数等を使ったときでは、CPUの負荷は
違うものなのでしょうか?
実は会社で使う業務アプリケーションの一部分をコードで書いて、ボタン一発で処理
終了!と考えていたわけです。会社のPCのスペックはと言うと、Celeronの600Mhz
で128Mbyte WIN98SEというものです。

またいろいろとご教授願うこともあると思いますが、できれば答えを書き込める様に
までなろうと思いますので、よろしくお願いします。

【15954】Re:意図したデータの先頭行番号の取得に...
回答  IROC  - 04/7/13(火) 12:57 -

引用なし
パスワード
   >CPUの負荷

処理速度ですよね? 

ご自分のデータで実際に試してみるのがよいと思いますよ。

【15957】Re:意図したデータの先頭行番号の取得に...
お礼  おっちゃん  - 04/7/13(火) 15:11 -

引用なし
パスワード
   IROC さん、ありがとうございます。
>>CPUの負荷
>
>処理速度ですよね? 
>
>ご自分のデータで実際に試してみるのがよいと思いますよ。

実機で試すのが一番ですね。処理が重たければ考えるようにします。

また良きアドバイス、お願いします。

11463 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free