• 締切済み

Excel vba 条件検索?について

できるのかどうかわからないのですが Sheet1 にIPアドレスの一覧があり Sheet2 にA列に192.10.2.* B列にhonsya と書いた一覧があるとして (例に挙げてるIPは適当です・・・。) Sheet1のIPアドレスの第3オクテッド目までの値とSheet2のA列の第3オクテッド目までの値を比べてSheet2の値に該当したものB列の値を出力するその際に 出力データの前後に文字を足して出力。 Sheet1にあるデータ分を行い データは出力したデータの下に 出力していく といった形をとりたいのですが 本当にできるのでしょうか?

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Findメソッドでのデータ検索   http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html#find にある「【例2】部分一致 」によって抽出を行なうような事ですか? オートフィルタ(AutoFilterメソッド)でのデータ抽出  http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_autofilter.html でも出来るかも知れません。 希望する結果がよくわからなかったです。

asuka_aqua
質問者

お礼

ご返答ありがとうございました vba不慣れでして 応用がうまくできなくてなかなかできませんです^^; しかもMSNと同じだったんですね これ・・・ あっちからも出してしまったのでこちらは一度締めますね。 ありがとうございますです。

asuka_aqua
質問者

補足

最終的にはcfgファイル作成をしたかったのですが アドレス部分に関するところのデータ作成の処理をさせたかったのです。 大量にあるので手作業だと大変なので自動化したくて Sheet1 のA列にIPアドレスが書き連ねてあって Sheet2 にA列に192.10.2.* B列にhonsya などとセグメンと分の一覧があり Sheet1の IPで192.10.2.12 っていうのがあったら Sheet2の 一覧から検索かけて 最終的には↓の状態のデータがほしい。 set address "xxxx" "[Sheet2のB列の値]([Sheet1の4オクテッド目の値])" [Sheet1のIPアドレス] 255.255.255.0 これをSheet1にある分だけ書き連ねたいのです。

関連するQ&A

  • Excel vba の書き方教えてください。

    書き方が分からないのでおしえてください。 やりたい動作は下記になります。 データは Sheet1のA列にIPアドレスだけ書いてあります。 Sheet2のA列にはIPアドレス(例 111.111.111.*) B列には名前(例 honsya) Sheet3のA1にはAAAAA、 A2にはBBBBB が書いてあるシートがあります。 (1)処理が完了したデータを記入するシート(シート名:完了)を作成。 (2) Sheet1のIPアドレスを第3オクテッド目までの値が同じものをSheet2のA列から探します。 (3)探し出したA列の値の右よこのB列の値を作成した完了のシートに書きだします。 その際 Sheet3に記載されているデータと検索対象のIPアドレスをB列の値にくっつけます。 ↓こんな感じに AAAAA "[B列の値]([検索対象のIPの第4オクテッド])" [検索対象のIPアドレス] BBBBB この状態のものが 完了 のシートに書きだされるようにしたいのです。 ここ数日これで悩んでて解決しないのでどなたか助けてください。

  • Excel IPアドレスを比較してセルを入替える

    以下のようなデータ   A列     B列 192.170.1.1 192.171.1.1 192.171.1.2 192.170.1.2 IPアドレスの第2オクテッドを比較し数値の小さいほうをが左にくるように VBAでクリック釦を作成したいのですがどのように記述すればよいでしょうか? 釦をクリックすると   A列     B列 192.170.1.1 192.171.1.1 192.170.1.2 192.171.1.2 のように該当のセルがA列・B列入れかえができる。 IPアドレスを取得する関数は ユーザー関数を使用してsplitn(範囲、第○オクテッド)で 第2オクテッドの数値は取得できます。 よろしくお願いします。

  • Excel VBAを使って会員検索

    Sheet1のA列に会員番号、B列に氏名、C列にフリガナ、D列に住所といったデータがあります。 Sheet2のA列に会員番号のみがあります。 この2つのデータを照合して、一致した場合のみ、Sheet1の該当会員データの横のセルに“一致”もしくは“1”などの値(上の例だとSheet1のE列に)を入力できるようなVBAを組みたいのですが、教えていただけますでしょうか?

  • Excel 文字列一部含む場合の戻り値

    sheet1  A     B 1 20     21 2 0      1 sheet2   A              B 1 172.20.1.1 2 172.21.1.1 とあった場合、 sheet2のB1に'sheet2'!A1が'sheet1'!A1を含む場合はsheet1!A2、'sheet1'!B1を含む場合はsheet1!B2 を返すように関数を組みたいのですがうまくいきません。 【前提】 sheet2 A列に入力されるのはIPアドレスです。 【得たい結果】 IPアドレスの第2オクテッド(172.~とか10.~など第1オクテッドは変化します)のみを比較して若番号には”0”、そうでない場合は”1”が戻り値で取れれば sheet1を使用しなくても結果が得られると考えますが全く検討がつきません。 よろしくお願いします。

  • EXCEL で検索、更新したい

    EXCEL でわからない箇所があり質問します。 前提条件 Sheet1 A列:名前 B列:年月 C列:値 データは、名前と年月で一意になるデータシートがあり マスターデータとして全データが登録されている Sheet2 A列:名前 B列:年月 C列:値 ある条件でとあるデータベースから抽出した名前と年月の一覧がある この段階で値のセルには何も入っていない やりたい事 (1)この状態でマクロを実行し、A列、B列を条件に該当する行から    C列を抽出しSheet2 にセット (2)Sheet2のC列の値を変更後、マクロの実行で    A列、B列の条件を元該当する行から、Sheet1の C列に値を更新 (3)もし、Sheet2のA列、B列の条件に該当しない行がある場合、    Sheet1に行追加しC列を格納 という事をしたいと考えています。 Sheet1 の全ての行をマクロでループさせて A列、B列をif分で比較し行を取得し、Sheet2 に張る場合、 遅くなるのであまりやりたくないと思っています Find 関数も考えたのですが、ヘルプを見る限り、条件が1つしか指定でき ないように思えるのですが、複数列の条件を指定できる Find 関数 あるいは、類似の関数とあかがあるのなら教えてください 最悪は、EXCEL ADO で、自分自身をSQLで抽出、Update、Insert を行う 事も考えていますが、 EXCELのセル内の式で、INDEX関数やDGET関数で簡単に抽出できるのに (ただ、値を変更するので式はかけないけど・・・) わざわざ、ADOでプログラムを組むのもどうなんだろうと疑問に思ってます。

  • エクセルVBAで複数の条件を満たす検索方法

    エクセルのVBAを使ってデータ検索を行うプログラムを作っています "Sheet2"は下記のように、A列に生年月日、B列に住所、C列に電話番号、D列にメールアドレスが入力されています        【Sheet2】   生年月日  住所    電話番号  メールアドレス     A      B       C        D 1 1999/9/10 東京都○○ 11-111-1111 aa@goo.co.jp 2 2003/2/26 大阪府○○ 22-222-2222 bb@goo.co.jp 3 1985/6/22 福岡県○○ 33-333-3333 cc@goo.co.jp 4 1995/4/11 愛知県○○ 44-444-4444 dd@goo.co.jp "Sheet1"のA1に生年月日、A2に住所、A3に電話番号を入力し、"Sheet2"のデータと照合して、3つの値が合致した行のD列のメールアドレスを"Sheet1"のB1に返したいと思います 上記の表だと、"Sheet1"のA1に1985/6/22、A2に福岡県○○、A3に33-333-3333と入力されている場合、B1にcc@goo.co.jpの値を返すようにしたいのです。 findを使って生年月日、住所、電話番号を検索し、行番号を取得して、3つの行番号が同じならその行番号のD列の値を返すというような方法で考えていたのですが、エラーが回避できずに困っています。 生年月日が同じ人がいたり、夫婦や親子などは住所と電話番号が同じといった場合があり、上手く検索できません。  エラー回避の方法、もしくは他のやり方でも構いませんので どなたかご教授願えないでしょうか? よろしくお願いします。

  • VBA 条件検索について

    VBAの検索について質問です。 以下のようなものを作ろうと思います。 sheet1とsheet2がありsheet1のA、Bの数値をsheet2の同じA,Bの数値の値の行を検索して, その同じ値の行のsheet1のCの数値の値からsheet2のCの数値を引いた値をsheet3のC列に返すプログラムを作ろうと思います。空白などで同じ値がない場合はsheet3に空欄を返そうと思います。 以下に例をプログラムの実行例を示します。 sheet1 ■ A 列 B 列 C列 1: 7 | 1 | 3 2: 5 | 8 | 2 3: 2 | 3 | 1 4: 9 | 6 | 4 sheet2 ■ A 列 B列 C列 1: 2 | 3 | 4 2: 9 | 6 | 2 3: 7 | 1 | 5 4: 5|   | 3 sheet3 ■ A列 B列 C列 1: 7| 1 | -2 2: 3: 2| 3 | -3 4: 9 | 6 | 2 自分で以下のプログラムを作成してみたのですが空欄が検索できなかったりしてなかなかできません。 どなたか、教えてください。お願いします。 Sub test() Dim sh1 As Object, sh2 As Object, sh3 As Object Dim d1 As String, d2 As String, a As Long Set sh1 =Sheets(“Sheet1”) Set sh2 =Sheets(“Sheet2”) Set sh3 =Sheets(“Sheet3”) For a = 1 To 3000 Step 1 d1 = sh1.Cells(a,1) & sh1.Cells(a,2) d2 = sh2.Cells(a,1) & sh2.Cells(a,2) Do while d2 <>”” If d1 = d2 Then Sh3.Cells(a,1) = sh1.Cells(a,1) Sh3.Cells(a,2) = sh1.Cells(a,2) Sh3.Cells(a,3) = sh1.Cells(a,3) Exit Do End If a= a+1 d2 = sh2.Cells(a,1) & sh2.Cells(a,2) Loop Next End Sub

  • Excel 日付の検索条件

    A列に日付、B列に数値が入っていると仮定します。 たとえば、A列に2004/5/1~2004/5/31という数値が入っている場合、該当するB列の数値の合計をだしたいです。 シートのデータが無限に増えていく為、どこかのセルに検索条件を置く、という形は使用したくありません。 =SUMIF(A:A,"【2004/5/1~2004/5/31】",B:B)の関数を使用したいのですが、検索条件をどうすればいいのかがよくわかりません。 (何を記入しても0を返してきます) 検索条件、または他に使用できる関数があれば教えていただきたいです。 宜しくお願いします_(._.)_

  • エクセルで検索値があった時に特定の文字列をかえす

    こんにちは。 Excelについて教えてください。 Excelのシートが2枚あり、1枚目には以下のようなデータがあります。 -------------------- A列    B列 -------------------- 1000 2000 3000 4000 4000 1000 -------------------- 2枚目のシートには各列に以下のようなデータがあります。 -------------------- A列    B列 -------------------- 1000    棚田さん 2000    池内さん 3000    山本さん 4000    佐藤さん -------------------- 1枚目の値が2枚目のシートの値に該当するものがあった場合、2枚目シートのB列の値を1枚目のシートに下のように返したいです。どのような関数を使ったらいいでしょうか? -------------------- A列    B列 -------------------- 1000   棚田さん 2000   池内さん 3000   山本さん 4000   佐藤さん 4000   佐藤さん 1000   棚田さん --------------------

  • エクセルで3つの条件で返す値を変えたい

    エクセルの1シート目 B列にメールアドレス エクセルの2シート目 A列に「○」または空欄 B列にメールアドレス のブックがあります。 エクセルの1シート目の A列に 2シート目B列に同じメールアドレスがあり、その行のA列が「○」の場合・・・・「○」を表示 2シート目B列に同じメールアドレスがあり、その行のA列が「空白」の場合・・・「△」を表示 2シート目B列に同じメールアドレスがない・・・「×」を表示 させたいのです。 =IF(COUNTIF(2シート名!B:B,1シート目!B1)>=1,"○","×") をいれたんですが これだと ○と×しか出ません。 なんとか値を3つ出せるようにできないでしょうか? よろしくお願いいたします。

専門家に質問してみよう