[[20190829165413]] 『結合セルに対してのFind検索について』(とあもん) ページの最後に飛ぶ

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

 

『結合セルに対してのFind検索について』(とあもん)

結合セルの検索にFindで検索をしたときに、なぜ検索されないのかという疑問があり、この場で解決できたらと思い投稿させて頂きました。
もしお分かりの方、ご教授頂けると幸いです。

A2〜A5,A6〜A9,A10〜A14が結合されていて、それぞれ、A,B,Cと値が書き込まれているとします。(A2〜A5)⇒"A",(A6〜A9)⇒"B",(A10〜A14)⇒"C"

上記の結合セルの範囲を
Set area = Range("A2:A14")
※(dim area as range)
と定義し、

Set search = area.Find("B", LookAt:=xlWhole)
※(dim area as range)

で検索をし、search.Rowにより6が返ってきます。

しかし、
Set search = area.Find("A", LookAt:=xlWhole)
※(dim area as range)

で検索をし、search.Rowの返りはnothingになります。
なんででしょうか?

そこで、検索範囲を

Set area = Range("A1:A14") ※A2⇒A1に変更
にするとsearch.Rowの返りはAになります。

ちなみに、イミディエイトでrange("A2")とやると、Aが返ってきます。

この疑問が解決できず、現状暫定で上記のように書き換えていますが
理解したいため、どなたかご教授頂けたらと思います。

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


追記>>

因みに、A2〜D2,E2〜H2,I2〜L2が結合されていて、それぞれ、A,B,Cと値が書き込まれているとします。(A2〜D2)⇒"A",(E2〜H2)⇒"B",(I2〜L2)⇒"C"

Set area = Range("A2:L2")

Set search = area.Find("A", LookAt:=xlWhole)

で検索をし、search.Columnで2が返ってきます。

列はできて行ができないです。

(とあもん) 2019/08/29(木) 17:28


 多分引数の省略が原因だと思います

 こちらで自動記録から

 Sub test()
    Dim area As Range
    Dim s As Range
    Set area = Range("A2:A14")

    Debug.Print area.Cells.Count

    Set s = area.Find(What:="A", LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, MatchByte:=False, SearchFormat:=False)

    Debug.Print s.Row
 End Sub

 と記述すると 2 が返りました

 Find は パラメータが多いので、ちゃんと指定したほうがいいと思います。

(渡辺ひかる) 2019/08/29(木) 17:43


面白いですね。 なんでこうなるかは判らないですが。(SearchOrder:=xlByColumnsを追加指定するだけでも、A2からでも答えを返すようです)

とりあえず、検索範囲をA1からにすれば対応できるのは既に判っているようですし、気になりますが、困りはしないかと。
(???) 2019/08/29(木) 17:55


渡辺ひかる様>

ご教授頂き、ありがとうございました。
とても助かりました。
パラメータ省略が原因のようですね。私も上記のパラメータの内容を見てみました。

どうやら、指定範囲の次のセルから検索開始するみたいですね。
でも列はできるのはまだ理解できていません、、、

???様>
SearchOrder:=xlByColumnsだけ追加指定でできるのですね。
情報ありがとうございます。

列方向への検索でできるのはわかりましたが、列方向の結合はなんでできるんですかね。。疑問です。

(とあもん) 2019/08/29(木) 18:23


コメント返信:

[ 一覧(最新更新順) ]


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