• ベストアンサー

EXCEL関数で質問です。

EXCEL関数で質問です。 下記のようなデータがあります。 PC名 旧IPアドレス マックアドレス 設置場所 新IPアドレス 使用者 XX   XXXX     XXXX      XXXX   XXXX     XXXX 300行位入っています。 旧IPアドレスと新IPアドレスを比較して同じ場合は行を削除して違うものだけ残し 別シートに吐き出したいのですが、関数かもしくはVBで一番簡単な方法を教えて頂けますか?

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

  • ベストアンサー
noname#204879
noname#204879
回答No.3

[フィルタオプションの設定]がお奨めです。 Sheet1!H1: 空白のまま Sheet1!H2: =B2<>E2 Sheet2 をアクティブにして、作業([データ]→[フィルタ]→[フィルタオプションの設定])を始めます。 [抽出先]→ 指定した範囲 [リスト範囲]→ Sheet1!$A$1:$F$300 [検索条件範囲]→ [Book1]Sheet1!$H$1:$H$2 [抽出範囲]→ $A$1:$F$1 お好みで“重複するレコードは無視する”にチェック入れ 【備考】 「計算時間が掛り過ぎる」などと脅す輩がいるけど、数百件のレコードなら大したことはないはず。数千件でも、トイレにでも行って戻ったときには結果が出ているはず。

その他の回答 (3)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 関数による方法です。  今仮に、元データの表の中で「PC名」という項目名が入力されているセルがSheet1のA1セルであり、Sheet3のA列を作業列として使用して、Sheet2に取り出した結果を表示させるものとします。  まず、Sheet3のA2セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$B:$B,ROW())<>INDEX(Sheet1!$E:$E,ROW()),COUNT(A$1:A1)+1,"")  次に、Sheet3のA2セルをコピーして、Sheet3のA3以下に貼り付けて下さい。  次に、Sheet2のA2セルに次の関数を入力して下さい。 =IF(ROWS($2:2)>COUNT(Sheet3!$A:$A),"",IF(INDEX(Sheet1!$A:$F,MATCH(ROWS($2:2),Sheet3!$A:$A),COLUMNS($A:A))="","",INDEX(Sheet1!$A:$F,MATCH(ROWS($2:2),Sheet3!$A:$A),COLUMNS($A:A))))  次に、Sheet2のA2セルをコピーして、Sheet2のB2~F2の範囲に貼り付けて下さい。  次に、Sheet2のA2~F2の範囲をコピーして、同じ列範囲の3行目以下に貼り付けて下さい。  以上です。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

B列とE列に新旧IPが記入してあるとすると G2に =B2=E2 と記入,リスト下端までコピー貼り付け G列にオートフィルタを設定して ○「同じ」を選んで絞り込み,行削除する ○「違う」を選んで絞り込み,コピーして別シートに貼り付ける どちらでもヤリタイ方法で行うのが,一番高速で簡単な方法です。 指の一本も動かしたくないのが「簡単」という意図でしたら、そのままマクロに翻訳して sub macro1()  range("G2:G" & range("B65536").end(xlup).row).formula = "=B2=E2"  range("G:G").autofilter field:=1, criteria1:="FALSE"  range("A1").currentregion.copy worksheets("Sheet2").range("A1")  activesheet.autofiltermode = false end sub とかでも勿論OKですが。

  • hktdog
  • ベストアンサー率31% (10/32)
回答No.1

こんな感じでどうでしょうか? Set s1 = Worksheets("Sheet1") Set s2 = Worksheets("Sheet2") x = 2 y = 2 Do While s1.Cells(x, 1) <> "" If s1.Cells(x, 2) <> s1.Cells(x, 5) Then s2.Cells(y, 1) = s1.Cells(x, 1) s2.Cells(y, 2) = s1.Cells(x, 2) s2.Cells(y, 3) = s1.Cells(x, 3) s2.Cells(y, 4) = s1.Cells(x, 4) s2.Cells(y, 5) = s1.Cells(x, 5) s2.Cells(y, 6) = s1.Cells(x, 6) y = y + 1 End If x = x + 1 Loop

関連するQ&A