Excel VBA質問箱 IV

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

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


13333 / 13644 ツリー ←次へ | 前へ→

【5863】1番早く行を返す方法をどなたか知りませんか? まこさん 03/6/4(水) 15:04 質問
【5864】Re:1番早く行を返す方法をどなたか知りませ... クウガ 03/6/4(水) 15:41 回答
【5867】Re:1番早く行を返す方法をどなたか知りませ... Jaka 03/6/4(水) 17:15 回答
【5869】Re:1番早く行を返す方法をどなたか知りませ... ゆと 03/6/4(水) 18:33 回答
【5876】Re:1番早く行を返す方法をどなたか知りませ... まこさん 03/6/5(木) 10:28 お礼
【5875】Re:1番早く行を返す方法をどなたか知りませ... まこさん 03/6/5(木) 10:26 お礼
【5874】Re:1番早く行を返す方法をどなたか知りませ... まこさん 03/6/5(木) 10:23 お礼
【5868】Re:1番早く行を返す方法をどなたか知りませ... ichinose 03/6/4(水) 18:01 回答
【5877】Re:1番早く行を返す方法をどなたか知りませ... まこさん 03/6/5(木) 10:32 お礼

【5863】1番早く行を返す方法をどなたか知りませ...
質問  まこさん  - 03/6/4(水) 15:04 -

引用なし
パスワード
   ご覧いただきありがとうございます。
次のような表があります。

行番号  列 
1    A
2    A
3    A
4    A
5    B
6    C
7    C
8    D

この表で、条件が「A」の最終行は4行目になります。条件が「C」の最終行は7行目になります。
このように列を見て条件と同じ物の最終行を一番早く返す方法を知りたいのですが。
列は、同じ条件のものは必ず1固まりに並んでいます。
よろしくご教授をお願いいたします。

【5864】Re:1番早く行を返す方法をどなたか知りま...
回答  クウガ E-MAILWEB  - 03/6/4(水) 15:41 -

引用なし
パスワード
   まこさん こんにちは。

Sub 条件検索()
  条件 = InputBox("条件を入力してください。")
  データ最終行 = Cells(Rows.Count, 1).End(xlUp).Row
  For 条件の最終行 = データ最終行 To 1 Step -1
    If Cells(条件の最終行, 1) = 条件 Then
      MsgBox (条件の最終行 & "行目です。")
      Exit Sub
    End If
  Next 条件の最終行
End Sub


こんな感じでしょうか?

【5867】Re:1番早く行を返す方法をどなたか知りま...
回答  Jaka  - 03/6/4(水) 17:15 -

引用なし
パスワード
   クウガさん まこさん こんにちは。
別解です。
65536行目が最後だった場合の時の処理は、入れていませんが...。
(仕事が多くなっちゃって)

Sub ak()
  Dim 条件 As String, 先頭行 As Long, i As Long
  条件 = InputBox("条件を入力してください。")
  先頭行 = Application.Match(条件, Columns(1), 0)
  For i = 先頭行 To 65536
    If Cells(i, 1).Value <> 条件 Then
      MsgBox i - 1 & "行目"
      Exit For
    End If
  Next
End Sub

【5868】Re:1番早く行を返す方法をどなたか知りま...
回答  ichinose  - 03/6/4(水) 18:01 -

引用なし
パスワード
   みなさん、こんにちは。
>次のような表があります。
>
>行番号  列 
>1    A
>2    A
>3    A
>4    A
>5    B
>6    C
>7    C
>8    D
>
>この表で、条件が「A」の最終行は4行目になります。条件が「C」の最終行は7行目になります。
>このように列を見て条件と同じ物の最終行を一番早く返す方法を知りたいのですが。
>列は、同じ条件のものは必ず1固まりに並んでいます。
>よろしくご教授をお願いいたします。

関数でもできそうですよ

数式の例は、上記の表に対して、"A"の最大行を求めます。

「=MAX(IF(A1:A8="A",ROW(A1:A8)))」(検索列がA列だとして)

但し、配列数式を使っていますから、
セルから抜けるときは Enterキーではなく、
Ctrl+Shift+Enterキーで抜けてください。

【5869】Re:1番早く行を返す方法をどなたか知りま...
回答  ゆと E-MAIL  - 03/6/4(水) 18:33 -

引用なし
パスワード
   皆さんこんばんは。
すでに幾つも回答で出ているようですが、せっかく作ったので一例を。

Sub 検索()
条件 = InputBox("条件を入力してください。")
Set R = Columns("A").Find(What:=条件)
  If Not R Is Nothing Then
    i = Application.CountIf(Columns("A"), 条件) - 1
    MsgBox (R.Row + i & "行目です。")
  Else
    MsgBox ("入力された条件はありませんでした。")
  End If
End Sub

【5874】Re:1番早く行を返す方法をどなたか知りま...
お礼  まこさん  - 03/6/5(木) 10:23 -

引用なし
パスワード
   挨拶おくれまして申し訳ありません。
どうもありがとうございます。
仕事の関係でなかなか検証できないのでもう少したって検証します。
本当にありがとうございます。
▼クウガ さん:
>まこさん こんにちは。
>
>Sub 条件検索()
>  条件 = InputBox("条件を入力してください。")
>  データ最終行 = Cells(Rows.Count, 1).End(xlUp).Row
>  For 条件の最終行 = データ最終行 To 1 Step -1
>    If Cells(条件の最終行, 1) = 条件 Then
>      MsgBox (条件の最終行 & "行目です。")
>      Exit Sub
>    End If
>  Next 条件の最終行
>End Sub
>
>
>こんな感じでしょうか?

【5875】Re:1番早く行を返す方法をどなたか知りま...
お礼  まこさん  - 03/6/5(木) 10:26 -

引用なし
パスワード
   お礼が遅くなって申し訳ありません。
今回は、どうもお世話になりありがとうございました。
仕事の都合でなかなか検証できません。まだ、していません。
もう少したって検証します。
ありがとうございます。
▼Jaka さん:
>クウガさん まこさん こんにちは。
>別解です。
>65536行目が最後だった場合の時の処理は、入れていませんが...。
>(仕事が多くなっちゃって)
>
>Sub ak()
>  Dim 条件 As String, 先頭行 As Long, i As Long
>  条件 = InputBox("条件を入力してください。")
>  先頭行 = Application.Match(条件, Columns(1), 0)
>  For i = 先頭行 To 65536
>    If Cells(i, 1).Value <> 条件 Then
>      MsgBox i - 1 & "行目"
>      Exit For
>    End If
>  Next
>End Sub

【5876】Re:1番早く行を返す方法をどなたか知りま...
お礼  まこさん  - 03/6/5(木) 10:28 -

引用なし
パスワード
   こんにちわ。
今回は、お世話になりありがとうございます。
仕事の都合で検証する時間がなかなかありません。
時間ができて検証させていただきます。
今回はありがとうございました。
▼ゆと さん:
>皆さんこんばんは。
>すでに幾つも回答で出ているようですが、せっかく作ったので一例を。
>
>Sub 検索()
>条件 = InputBox("条件を入力してください。")
>Set R = Columns("A").Find(What:=条件)
>  If Not R Is Nothing Then
>    i = Application.CountIf(Columns("A"), 条件) - 1
>    MsgBox (R.Row + i & "行目です。")
>  Else
>    MsgBox ("入力された条件はありませんでした。")
>  End If
>End Sub

【5877】Re:1番早く行を返す方法をどなたか知りま...
お礼  まこさん  - 03/6/5(木) 10:32 -

引用なし
パスワード
   こんにちわ。
前々回の質問に続き今回もお世話になりました。ありがとうございます。
まだまだ初心者なのでみなさんに教えていただいて、ああそういう使い方ができるんだということばかりです。私の仕事の都合でなかなか検証できません。ichinoseさん以外のみなさんからもいろいろなやり方を載せていただきました。時間ができて検証します。また、お世話になると思いますがその節はよろしくお願いします。
▼ichinose さん:
>みなさん、こんにちは。
>>次のような表があります。
>>
>>行番号  列 
>>1    A
>>2    A
>>3    A
>>4    A
>>5    B
>>6    C
>>7    C
>>8    D
>>
>>この表で、条件が「A」の最終行は4行目になります。条件が「C」の最終行は7行目になります。
>>このように列を見て条件と同じ物の最終行を一番早く返す方法を知りたいのですが。
>>列は、同じ条件のものは必ず1固まりに並んでいます。
>>よろしくご教授をお願いいたします。
>
>関数でもできそうですよ
>
>数式の例は、上記の表に対して、"A"の最大行を求めます。
>
>「=MAX(IF(A1:A8="A",ROW(A1:A8)))」(検索列がA列だとして)
>
>但し、配列数式を使っていますから、
>セルから抜けるときは Enterキーではなく、
>Ctrl+Shift+Enterキーで抜けてください。

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