[[20200515081906]] 『Findによる検索について』(ばばこ) ページの最後に飛ぶ

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

 

『Findによる検索について』(ばばこ)

Findによる検索で、思うような検索ができず、困っています。
現在、エクセルのシートに項目ごとに情報が羅列されたものがあります。

3)  日付 名前 性別 部署 
4)  5/14 A   男  あ
5)  5/14 B   男  あ 
6)  5/14 C   男  い
7)  5/15 D   男  い
8)  5/15 E   男  う

3)行は、項目になります。
4)行からは項目に基づくデータになります。

そこで、Findで、5月14日の行範囲を取得をしたく、現在のコードとしては

Set sh = Range(Cells(4, 1), Cells(n_row, 1)).Find(What:=inputday, LookAt:=xlWhole, SearchOrder:=xlByColumns)

としています。尚、日付は1列目にあり、n_rowは最終行番号で8行目になります。inputdayは5月14日 です。

私の認識では、この場合、範囲に対して上から検索をするので、範囲の最初の行番号が、4が返ってきてほしいのですが、5が返ってきてしまいます。
これを4が返ってくるようにするにはどうすればよいでしょうか?

単に検索範囲をCells(4, 1)⇒Cells(3, 1) にするしかありませんか?

でも、Set sh = Range(Cells(4, 1), Cells(4,1)).Find(What:=inputday, LookAt:=xlWhole, SearchOrder:=xlByColumns)

とすると、sh.row が4で返ってきます。

また、
3)  日付 名前 性別 部署 
4)  5/14 A   男  あ
5)  5/15 B   男  あ 

このように日付が連続しない場合で、

Set sh = Range(Cells(4, 1), Cells(n_row, 1)).Find(What:=inputday, LookAt:=xlWhole, SearchOrder:=xlByColumns)

sh.rowは4が返ってきます。

何なのですかこの仕組み?
分かる方ぜひ教えてください。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


Findメソッドは、なにも指定しない場合、【最初のセル】の次から検索する仕様だからです。
https://www.moug.net/tech/exvba/0050116.html

なので、After:=Cells(n_row, 1) を追加すればOKです。

ちなみに、↓はA4セルだけしかみてないから

 Range(Cells(4, 1), Cells(4,1))

見つかれば、sh.row で4が返り、
見つからない場合、実行時エラーになります。

>日付が連続しない場合
連続するしないでなく、A4セルの次のA5セルから探していったら、A4セルで見つかっただけです。
なので、たとえば、A6セルに条件に合うものがあれば、そちらが返ります。

(もこな2) 2020/05/15(金) 08:53


もこな2さん>
ありがとうございました。

再度質問なのですが、findが次のセルから検索する仕様ということは理解致しました。

After:=Cells(n_row, 1)
を追加すると、指定範囲の最終行になりますが、その次は指定範囲の最初の行になるのでしょうか?
(ばばこ) 2020/05/15(金) 08:59


連投すみません、
今追加してみましたが、型が一致しません というエラーがでてしまいます。
(ばばこ) 2020/05/15(金) 09:01

>その次は指定範囲の最初の行になるのでしょうか?
はい、その通りです。
ぐる〜とまわって検索しますから、最後の次は最初です。

ちなみに、以下は書き方が悪かったです。
↓のように読み替えてください。

見つかれば、sh.row で4が返り、
見つからない場合、実行時エラーになります。

見つかっていれば、sh.row で4が返り、
見つかっていなければ、sh.row は、実行時エラーになります。

>型が一致しません

あれ…、ちょっとスマホなので、直ぐに確認できませんが、どの行でエラーになります?

(もこな2) 2020/05/15(金) 09:05


もこな2さん>

なるほどです!とてもすっきりしました。
そして、エラーについてですが、私の書きミスでした。
本当にありがとうございます!!!
(ばばこ) 2020/05/15(金) 09:10


コメント返信:

[ 一覧(最新更新順) ]


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