- ベストアンサー
Findを使用して、データが入力されているセルのみを検索
| A | ------- 1| 123 | 2| | 3| 456 | 4| 789 | Excel2003を使用しています。 上記のデータをFindを使用して、データが入力されているセルのみを検索したく、 Set C = Worksheets(AAA).Range("A:A").Find(<>"", LookIn:=xlValues) など、試してみたのですが、上手くいきません。 『Findを使用して、データが入力されているセルのみを検索』する事じたいが無理なのでしょうか。 ご教授の程、お願いします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
下記のようになります。 Dim c As Range Dim a As String With Worksheets(2).Range("b2:b9") Set c = .Find("*", LookIn:=xlValues) If Not c Is Nothing Then a = c.Address Do Debug.Print c.Value; c.Address Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> a End If End With
その他の回答 (8)
- o_chi_chi
- ベストアンサー率45% (131/287)
たびたびすいません。 With Worksheets("AAA").Range("A:A") でした。
- o_chi_chi
- ベストアンサー率45% (131/287)
With Worksheets(2).Range("A:A") でした。
- o_chi_chi
- ベストアンサー率45% (131/287)
Set C = Worksheets(AAA).Range("A:A").Find("*", LookIn:=xlValues) でももちろんOKです。
お礼
ご回答ありがとうございます。 提示して頂いたプログラムを動かしてみたのですが、$A$3しか検索してくれません。RangeもColumnsも同じでした。 組み方が間違っているかもしれないので、下記に組んだプログラムを提示します。よろしければ、チェックしてください。 Sub Test() Dim C As Range Do Set C = Worksheets("AAA").Columns("A:A").Find("*", LookIn:=xlValues) Set C = Worksheets("AAA").Range("A:A").FindNext Loop
- o_chi_chi
- ベストアンサー率45% (131/287)
Set C = Worksheets(AAA).Columns("A:A").Find("*", LookIn:=xlValues) で最初のセルA1が検索できます。 繰り返して検索であればFindNextを使用しDo~Loopで検索してください。
- takana_
- ベストアンサー率44% (21/47)
#1です Forループで各セルにアクセスします 以下のコードを参照してください Sub Macro1() Dim C As Range Dim D As Range Set C = Worksheets("AAA").Range("A:A").SpecialCells(xlCellTypeConstants) For Each D In C Debug.Print D.Address Next End Sub または Sub Macro2() Dim C As Range Dim i As Integer Set C = Worksheets("AAA").Range("A:A").SpecialCells(xlCellTypeConstants) For i = 1 To C.Count Debug.Print C(i).Address Next End Sub
お礼
「For Each D In C」の方が望んでいた答えです。 Findは使えませんでしたが、新しい方法を知ることができました。 二回も回答を頂きありがとうございました。
- lul
- ベストアンサー率41% (10/24)
Findの式に誤りがありますので以下で試してみて下さい。 Set C = Worksheets(AAA).Range("A:A").Find("", LookIn:=xlValues) Find(<>"",←"<>"は必要ないので、これを外せば出来ると思います。
お礼
ご回答ありがとうございます。 このプログラムですと、「空白のセル」のみ検索してしまいます。『データが入力されているセルのみを検索』=『空白でないセル』のみ検索したいので、分かるようでしたらご教授お願いします。
- fujillin
- ベストアンサー率61% (1594/2576)
Findを利用していませんが、セル選択を利用すれば目的のことはできるかと思います。 <例> Set C = Worksheets(AAA).Range("A:A").SpecialCells(xlCellTypeConstants, 23) *上例では、値が入力されているセルを選択しています。 (式が入力されているセルは除かれています)
お礼
早速のご回答ありがとうございます。 このプログラムですと、アドレスが『$A$1,$A$3:$A$4』となってしまいますが、123=$A$1,456=$A$3 のように個々のアドレスを取得する事はできないのでしょうか。 もし、宜しければご教授下さい。
- takana_
- ベストアンサー率44% (21/47)
以下でどうでしょうか? Dim C As Range Set C = Worksheets("AAA").Range("A:A").SpecialCells(xlCellTypeConstants) やっていることは、メニューから下記を実行したのをコード化しています。 [編集]→[ジャンプ]→[セル選択]→[○定数]をチェック
お礼
早速のご回答ありがとうございます。 提示して頂いたプログラムを動かしてみました。SpecialCellsというやり方を知らなかったので、勉強になりました。 このプログラムですと、アドレスが『$A$1,$A$3:$A$4』となります。 123=$A$1,456=$A$3 のように個々のアドレスを取得する事はできないのでしょうか。 もし、宜しければご教授下さい。
お礼
動きました!やっと解決できました!! まだプログラムが理解できない所がありますが、調べてみます。どうしても理解できなければ、また質問するかもしれませんが…(^^; 三度にわたり、回答いただきありがとうございました。