• ベストアンサー

[マクロ]高速な検索方法

以下のマクロを作成しようと思っています。 (1)シート1のセルA1の値を変数に格納 (2)シート2のセルA1~A100の中で変数を等しい値を検索 (3)見つかったセルの右に"成功"を入力 ※(1)~(3)を複数回繰り返す(検索値が毎回変わります。) 現在は、 (1)A1を変数に格納 (2)シート2のセルA1~A100を範囲選択 (3)マクロの自動記録で作成したCtrl+Fの検索を実行 (4)見つかったセルをアクティブにする (5)アクティブセルからの相対指定で成功を記入 としています。 これだとものすっごく時間がかかってしまうのです。。。。 なんとか早くやる方法はありませんでしょうか。 ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

Sub ニ分探索と関数で() 'Sheet2はA1:A100を基準に昇順で並び替える必要があります 'マクロで実行して、実行後元に戻せば良いと思います。 'VBA不得意なためB1セルを作業セルとします(^^; Dim i As Long Range("B1").Formula = "=MATCH(A1,Sheet2!A1:A100)" i = Range("B1").Value If Worksheets("Sheet2").Cells(i, 1) = Range("A1").Value Then _ Worksheets("Sheet2").Cells(i, 2) = "成功" Range("B1").Clear End Sub 少なくとも順次探索より速いかなあ?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • 374649
  • ベストアンサー率38% (203/527)
回答No.4

Sheet1のセル"A1"にデータを入れて実行すればSheet2の該当B列のセルに”成功”と表示されます、変数は使ってません。 Sub 検索() Dim i As Integer Sheets("Sheet2").Select For i = 1 To 100 If Cells(i, 1) = Sheets("Sheet1").Cells(1, 1) Then Cells(i, 2) = "成功" End If Next i Sheets("Sheet1").Select End Sub こんな物でどうでしょうか!!!

全文を見る
すると、全ての回答が全文表示されます。
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

わざわざマクロを使用するまでもなくNo1さんの回答のように関数式を利用すればA1セルの内容を変えると瞬時に実現されます。 マクロの勉強をしたいのならそれほど難しいマクロではないので試行錯誤しながら作成するべきです。 動作は A1セルをアクティブにする A1セル内容を変数に収納 ●OFFSETでアクティブセルの移動 アクティブセル内容と変数が等しければOFFSETで隣のセル内容に"成功"を挿入 ●にループ 上記動作をマクロ化するだけです。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>※(1)~(3)を複数回繰り返す(検索値が毎回変わります。) ここがどうなっているのかによって、決まってくる物だと思いますが。 例えばSheet1のA列を配列に放り込んで、Sheet2のA1~A100の値を 順次取得し配列内にあるか判断する。 あった場合には取得したデータ行の隣のセルに”成功”と代入する。 と言う事とは違うのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • ESE_SE
  • ベストアンサー率34% (157/458)
回答No.1

マクロというかExcel関数の使用なので手作業が入りますが。 B1セルに =IF($A$1=A1,"成功","") と記述してセル内容をB列に貼り付ければ良いのではないかと。 さらに完了後、B列の内容をコピーしてC列に値貼り付けすれば 純粋なテキストとして取得できます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロ(値を検索して別シートにコピー)

    エクセルで下記のマクロをご教示いただけるでしょうか。 1.Sheet1のアクティブセルの右に5つ、下に1つのセルを起点として下方向に6セル分をコピー (例)Sheet1のアクティブセルがA2だとすると、F3~F8をコピー 2.Sheet1のアクティブセルの値(yy/mm/dd形式の日付)と同じ値のセルをSheet2のA列から検索し、該当セルの右に2つ分のセルに行列を入れ替えて値のみをペースト (例)Sheet1のアクティブセル(A2)の値がSheet2のA4セルにあるとすると、Sheet2のC4に行列を入れ替えて値のみペースト 3.Sheet1のアクティブセルの値がSheet2のA列に2つ以上あれば、「同じ日付が複数あります。」というメッセージを表示

  • 検索の方法(エクセル マクロ)

    マクロは記録マクロしかできない超初心者です。 エクセルのsheet1のA1のセルに入っている内容(都度変更)と同一のセルをsheet2で検索し、カーソルをそこに移動させるマクロ記述をしたいのですが、どうなりますか。 記録マクロで、sheet1のA1をコピーし、sheet2に移動して検索窓で貼り付けて「次を検索」とやったのですが、記述をみるとA1の内容がそのまま記述されていて汎用性が無いようです。 よろしくお願いいたします。

  • マクロの記録で任意の文字を検索してそのセルから範囲を選択したいのですが

    マクロの記録で任意の文字を検索して、見つかったセルから範囲を選択して別なシートへ切り取りし、貼り付けたいですが何か方法はありますか?現在は検索をしたセル番号になってしまいます。 マクロはじめたばかりです。 検索→い→(A2:C5)選択&切り取り→sheet2貼り付け→検索(sheet2)→え→(A3:C4)選択&切り取り→sheet3貼り付け sheet1    →sheet2   →sheet3  ABC     ABC    ABC 1あかさ    1いきし   1えけせ 2いきし    2うくす   2おこそ 3うくす    3えけせ 4えけせ    4おこそ 5おこそ できれば検索で発見されたA2やA3を任意のアクティブセルにし、範囲はC列の一番下のセルを選択し切り取りたいのですができますでしょうか。

  • アクティブセルを1クリックで検索

    右クリックメニューに適当にメニューを追加して、 そのメニューをクリックすると、 ctrl+fの検索窓がひらいて、そこに、アクティブセルの値を入力する マクロのやり方を教えてください。 できれば、もう一つ教えて頂きたいのですが、 そのブックとは別にブックを開いているのですが、 そのブックをアクティブウィンドウにして、 そこで”検索”ボタンを押す、というところまで やりたいです。 その、もう一つのブックで検索で見つかったセルをみて、 紙に書き出すというのをやっているのですが、数が膨大なので できればマクロでやりたいと思い質問しました。

  • 繰り返し処理のマクロ

    下記のマクロをご教示いただけるでしょうか。 ①シートAのアクティブセルをコピーし、シートBのE1セルにペースト ②マクロ「結果反映」を実行 ➂シートAのアクティブセルを1行下に移動 ①から➂をアクティブセル=空白セルになるまで繰り返し

  • エクセルのVBAを使って、セルの値の検索をしたいと思ってます。

    エクセルのVBAを使って、セルの値の検索をしたいと思ってます。 ですが、cells.findのように、アクティブセルが移動することなしに、値のみを取得し、変数に格納したいと思っていますが、どうすればよいか、見当がつきません。 繰り返し構文を使えば、検索はできますが、それだと、無駄に重くなりそうなので、何か良い方法はありませんか?

  • エクセルのマクロで任意のセルを別Sheetで検索したいのですが?・???

    PC初心者で困っています。 エクセルのマクロでSheet1アクティブセル(1)をコピーし、 Sheet2でCTRL+Fで検索ダイアログに(1)を貼り付け、検索する。 マクロを作ってみましたが、 マクロ実行2回目から上手くいきません。これはモジュールで検索ダイアログで貼り付けるところで””に変えても駄目でしたが? どうするか御存知でしたら教えて頂けませんでしょうか? 宜しくお願いいたします。

  • 検索方法について

    マクロの記述方法? Sub データの検索()        Dim myRange As Range Set myRange = Range("範囲").Find(what:=Range("セル").Value LookIn:=xlValues) これで(セル)と同じ値を持つセルを検索できるんですが、    If Not myRange Is Nothing Then ↑だった場合 見つかったセルの終端セルのひとつ右のセルを取得して ↑このマクロ記述がどうやってもできません・・・ どうすればよいのでしょうか? ちなみに違うシートから範囲を決めることって可能でしょうか? (シート1にユーザーフォームを起動させるボタンあり) (シート1のA1のセルと同じデータをシート2のデータから検索したい) ぐちゃぐちゃですがわかる方いますでしょうか・・・?

  • エクセルマクロ

    キーボード操作では、→→→↓shiftキー押しながら→→↓↓の手順操作のマクロを作成したい (セル番地で指定したマクロでなく、開始時のアクティブセル(任意セル番地の基点)から右3下1の位置から右2、下2の範囲指定をしたい) 仮に例を示すと、アクティブセル(仮にアクティブセル番地B5だったとすると)からカーソル左へ3つ、下へ1つ移動(アクティブセルはE6)し、右に2、下に2(E6:F7)を範囲選択するマクロを作成したい。

  • VBA マクロで”#N/A”のエラーに関する質問

    Excel2003を使用してマクロを組んでる者です。 セル内の値をとって変数に格納し比較処理など行っています。 シート内のあるセルに「#N/A」などエラー算術が存在した場合マクロで宣言した変数型に合わず格納できずエラーがでます。 型はVariant型にしてます。。 いろんな型を試しましたがだめです。 質問はエラー算術に対応した型があるのでしょうか、またこのエラー算術を無視できるロジックってございますか? よろしくお願い致します。

このQ&Aのポイント
  • マシニング加工で30mm角の板厚2.5mm幅の荒加工でビビらない刃物はありますか?
  • アルミの鋳造品ロ型の2.5mm板厚の荒加工には、ビビらない刃物を使用することができますか?
  • アルミの鋳造品ロ型の2.5mm板厚を持つ荒加工のために、ビビらない刃物を使えるのでしょうか?
回答を見る

専門家に質問してみよう