[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『結合セルに対しての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
とりあえず、検索範囲を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.