- ベストアンサー
EXCEL関数で質問です。
EXCEL関数で質問です。 下記のようなデータがあります。 PC名 旧IPアドレス マックアドレス 設置場所 新IPアドレス 使用者 XX XXXX XXXX XXXX XXXX XXXX 300行位入っています。 旧IPアドレスと新IPアドレスを比較して同じ場合は行を削除して違うものだけ残し 別シートに吐き出したいのですが、関数かもしくはVBで一番簡単な方法を教えて頂けますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
[フィルタオプションの設定]がお奨めです。 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)
関数による方法です。 今仮に、元データの表の中で「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)
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)
こんな感じでどうでしょうか? 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