- ベストアンサー
VBA Find
困りました、、 Findを使って検索しようとしていて、 検索する値に変数を使っているのですが (変数は文字列) 検索するものがたくさんあり、 ひとつの項目ごとにFindを書くのがとても面倒です 調べてみても数字を増やしていく方法しか見つからず どうすればいいのか分からなくなりました^^; どうにかひとつのFindで10個ほどある項目を順番に検索していく方法が ありましたらお願いします(__)
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- satoron666
- ベストアンサー率28% (171/600)
- satoron666
- ベストアンサー率28% (171/600)
- satoron666
- ベストアンサー率28% (171/600)
関連するQ&A
- find での検索について
find での検索について 以下のような繰り返しの処理を作成しました。 (実際のコードよりかなり簡略化して書いています) for 1 to *** a = sheets(1).cells.find(what:=ABC) next a = sheets(1).cells.find(what:=ABC) 常に変化する変数"ABC"を元に他のブックに検索をかけ、データをコピーしてくる 処理をしています。 つまずいているところは繰り返し中の検索は正常に処理出来ているが nextを抜けた後の検索がうまくいかない点です。 具体的には他のブックに検索したい値(変数"ABC")があるのに検索できないというものです。 自分なりに以下のような切り分けを行いました。 1,nextを抜けた後の変数"ABC"の値が他のブックに存在しない変数を取得しているのではないか? と思い直前で変数"ABC"を表示させてみたが正常 2,"ABC"の値に空白や,大文字、小文字等があり検索出来ないのではないか? と思い調べてみたが正常 3,引き数LookInですべてのパターンを試したがうまくいかなかった。 途方に暮れて、手動で検索を行ってみました。 1,エラーで途中で止まってから他のブックをCtrl+Fで検索(マクロの実行途中で止まっているため、検索しようとしていた値、変数"ABC"がすでに検索する文字列(N):に入力されている)するが対象が見つからない。 2,検索しようとしていた値(他のブックに入力されている値)を直接コピーして検索をかけたところ 正常に検索できた 3,おかしいなと思いCtrl+Fで"検索する文字列(N):"をプルダウンメニューをみてみると全く同じ値がありました。試しになんどか交互に手動検索をかけてみましたが変数"ABC"から取得した方では検索できません。 検索しようとしていた値(他のブックに入力されている値)を直接コピーしたほうから検索出来ます。 どちらの値も違いはないように見えます。 どなたかこのような現象に心あたりがあるかたはいらっしゃいますでしょうか?
- ベストアンサー
- Visual Basic
- VBA/FIND関数を使っての先頭文字列の検索方法
エクセルVBAにてFIND関数を使って、 文字列検索⇒コピー&ペーストのマクロを作成しているのですが、 どうしても、先頭文字列から検索をする方法がわかりません。 たとえば、 あいうえお いうえおあ おあいうえ えおあいう という文字列から「あいう*」を検索したい場合、 1行目だけを抽出したいのですが、 1,3,4行目が抽出されてしまいます。 find関数では先頭文字からの検索はできないのでしょうか? もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか? アドバイス、よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- マクロのCells.Findについて
エクセルマクロのCells.Findについて教えてください。 特定の文字列を含むセルを検索するときにCells.Findを使うと思うのですが、例えば、「スペル」という文字列を検索したいけれども、「ゴスペル」というような文字列は排除しながら検索できますか?「スペル」と入力されているセルと、「ゴスペル」と入力されているセルと、「スペル、ゴスペル」と入力されているセルがあったときに、「スペル」や「スペル、ゴスペル」と入力されているセルを検索したいです。 Cells.FindのWhat:=の記入中身を工夫すればできないかなと頭を悩ませていますが、Cells.Find以外の方法でも結構です。どうか宜しくお願いします。
- ベストアンサー
- その他MS Office製品
- エクセルVBAのFindメソッドを使って・・・
こんばんは。エクセルのVBAで教えてください。 I列で「数量」という文字を見つけて、 その(I列の)右隣(J列)の値をB2以降に、 その2つ左(G列)のレートをC2以降に、 その3つ左(F列)の、2つ上の商品名をA2以降に 順に書き出していくようにしたいのですがどのようにコードを 書けばいいでしょうか? Findメソッドを使ってできそうだと考えたのですが、その先が さっぱりわかりませんが、なんとか形にしたいので質問させていただ きます。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA/ CurrentRegion.Find
以下の様なVBAで"検索ワード"が入力されているセルを抽出しています。 Set 検索結果 = 検索範囲.CurrentRegion.Find(what:="検索ワード") 検索ワードは"01000"といった感じの5桁の数字(テキストタイプ)です。 7000行くらいの検索範囲の中から、2500回くらいの"検索ワード"を変更しながら検索するものです。 概ねうまくいくのですが、10件くらい、検索結果に実際と異なる値が入ります。 デバッグしていくとうまくいくものは例えば検索ワードが"02020"だった場合、検索結果も"02020"となりますが、うまくいかない場合には、検索ワードが"03000"のときに検索結果に"F003000"といった値が入り、検索結果.rowには全く関係のない"01750"が入力されているセルの行番号が入ったりします。 10個くらいそういう現象が起きる"検索ワード"には全く規則性はなく("03000"とか"10233"とか先頭が"0"のものに限られる、といったこともなく)、検索結果に入る値も"F003000"や"A1023300"など、検索ワードを含んでいるようなのですが、前後につく文字はよくわかりません。 しかも、実際には検索範囲の中に検索ワードは存在し、例えば"03000"の行を検索範囲の一番上に並び替えた場合は、ちゃんとヒットします。 非常に分かりにくい質問で恐縮ですが、何か考えられる要因があるようでしたら、可能性だけでも結構ですので、ご意見いただければと思います。 ※"検索結果"とか"検索ワード"とかは実際のVBAの中では半角アルファベットで定義されています。 ※ほとんどがうまくいっているので定義の方は問題無いものと思われます。
- ベストアンサー
- Excel(エクセル)
- エクセルVBAで検索(FIND使用)
困っています。お願いします。 例、このようなシートがあるとする 100 200 300 1000 10000 エクセルVBAで fc = Range("a1").Interior.Find("100") 「100」で検索すると100だけではなく、100を含むすべての文字列、つまり1000、10000も全部ひっかかります。 ちょっと困るので、完全一致のものだけを抽出する方法ありませんか。 ちなみに今日はじめてエクセルVBAを触りました。初心者です
- ベストアンサー
- オフィス系ソフト
- 【VBA】findの検索条件における制限について
すみません、教えてください。 例) Range("XX" & YY).Find(what:=文字A, lookAt:=xlWhole) ↑のような感じで完全一致で検索したいのですが、 実行するとエラーコード13のエラーが出てしまいました。 実行時エラー'13' 型が一致しません。 調べてみたのですが、VBAの本にはfindのwhatはVariant型と書いてあり、 Variant型が16バイトという記載がありました。 例文の“=文字A”には30バイトの文字列が入っている事がわかりました。 文字数を減らした所うまく通ったのでこれが原因と考えているのですが、 もし、対処方法があれば教えていただきたいです。
- 締切済み
- Visual Basic
- エクセル VBA find は別シートを検索できますでしょうか?
こんばんわ。マクロ初心者です。 皆さんいつも親切なご回答ありがとうございます。 早速ですが質問内容を記入いたします。 ・ブックA を開いています。 選択している行のC列セルの値を検索キーワードにして、 ブックB 内を検索し、検索結果のセルの3つ左のセルの値を、 ブックA で選択していたセルの同じ行のO列(15列目)に入力したいです。 ※ブックBをアクティベートする事無く行えますでしょうか? (他の処理と組合わせて行い、回数も多いので、 ブックA⇔ブックB アクティベートの往復は避けたいです。) 下のようなマクロを作成してみましたがうまくいきません。 どうかご指導よろしくお願いいたします。 --------------------------------------------------------------- dim 検索品目 as string dim fcell as object dim i as integer i = Selection.Row '選択行の3列目セルの値を変数『検索品目』に格納 検索品目 = Cells(i, 3).Value 'オブジェクト変数『fcell』に検索したセルを格納 Set fcell = Cells.Find(What:=検索品目, After:=Workbooks("ブックB.xls").Worksheets("sheet1").Range("G2"), LookAt:=xlWhole, searchorder:=xlByColumns) '検索したセルの3行左のセルの値を変数『オーダ番号』に格納 オーダ番号 = fcell.Offset(, -3).Value 'ブック A の選択行の15列(O列)にデータ入力 Cells(i, 15) = オーダ番号
- ベストアンサー
- オフィス系ソフト
- Excel VBAのFindメソッドについて
Excel VBAを勉強中の者です。 Findメソッドで、数字の入ったF5セルからF28セルの範囲から、 1という数字の入ったセルを検索したいと思い Sub test() Dim xRange As Range Set xRange = Range("F5:F20").Find(What:=1, LookIn:=xlValues) xRange.Select End sub としました。 しかし、このまま検索するとF6セルの12が検索されてしまいます。 他の数字では問題なく、対象の数字の先頭の数字が選択されます。 どうしてでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- vbaのFindメソッドで取得するにはどうすれば
A1に「あ」B1に「い」と入れて、 A2に「=A1&B1」としました。 この時、A2は「あい」と表示されます。 今回やりたいことは、 Sub test() Debug.Print Cells.Find(What:=" あい").Row End Sub で、2を返したいのですが、 実行時エラー91になってしまいます。 セル内に該当の文字列がないからだと思いますが、 数式でつなげた文字列を、 vbaのFindメソッドで取得するにはどうすれば良いでしょうか?
- ベストアンサー
- Excel(エクセル)
お礼
ありがとうございます!! 基本的な動きはこれでいけたと思います。 あとは細かい所のデバッグをしていくだけですね 関数はちょっと、、、 1クリックでやりたいもので(笑)