• ベストアンサー

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/7940)
回答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

  • 色のついた行を選択する関数(Excel)

    教えてください(Excel)。 Sheet1にはデータがいっぱいある。そのなかから、僕は特定の情報がふくまれている行に赤色を塗った。たくさんの行に赤色を塗った。 ここにおいて、Sheet1で赤色が塗られた行だけを、Sheet2に表示させたい。 上述の作業をしたいときに便利な関数があれば教えてください。

  • Excel2007で質問です。

    Excel2007で質問です。 別の方からもらったブックなのですが、必要な個所以外の行や列が削除されていました。 具体的に言うと、56行目から下の行がなく、バックの青い画面が表示されています。 列ではAP以降右側が削除されていて、バックの青い画面が見えています。 表示モードは「標準」で、印刷範囲やシート保護もされていません。 これら列や行は非表示ではなく「削除」されていて、挿入しなければ増やすことができません。 例えば列APを選択し列挿入をするとAQが作られるといった感じです。 別シートにコピー等せずに、このシートで、一度に全行・全列表示(標準のシートのような) させることはできないのでしょうか。 (画像では、サンプルとして小さくしたシートを載せました)

  • Excel関数で違った答えになってしまいます

    Excel関数で違った答えになってしまいます Excelで商品の管理をしているのですが、 関数を入れても答えが違ってしまいます。 [Sheet1]・・・コード入力シート (A1)(A2)・・・商品コード (B1)(B2)・・・数量 [Sheet2]・・・データベースシート (A列)・・・商品コード とあり、データベースの価格を 数量により変化させます。 例えば 商品コード(as400)の価格を 数量100個以上なら10円、100個未満だと15円 としたいのです。 作成した関数は IF(OR(AND('Sheet1'$A$1=A1,'Sheet1'$B$1>=100),AND('Sheet1'$A$2=A1,'Sheet1'$B$2>=100)),10,15) としました。 ただこれだと、[Sheet1]の1行目は正しく表示されるのですが 2行目になると、数量を1個にしても価格が10円になってしまいます。 どのようにすれば良いか悩んでいます。 よろしくお願いします。

  • VBAでデータを縦結合する方法

    A.xlsというExcelブックにSheet1~Sheet35があります。 各シートには以下のような同じフォームのデータが入っています。 XXXX部分と生徒数はデータごとに異なります。 生徒氏名 国語 数学 理科 社会 英語 XXXX XX XX XX XX XX XXXX XX XX XX XX XX   :   :  :  :  :  : XXXX XX XX XX XX XX XXXX XX XX XX XX XX XXXX XX XX XX XX XX いま、Sheet1の前に「併合」というシートをつくり、 そのシートに Sheet1のデータ Sheet2のデータ Sheet3のデータ : Sheet35のデータ というようにすべてのデータを縦に結合した結果を出力したいと考えています。 これを書くためのVBAコードを教えていただけないでしょうか。 よろしくお願いいたします。

  • 関数の質問

    エクセル2003を使用しています。 下記のシート1に不規則な空白行があり、それをシート2に空白行を詰めて 表示させたいのですがわかりません。 関数でよろしくおねがいいいたします。 シート1 A B C D E F G 1 1 1 1 1 1 1 1 2 3 2 2 2 2 2 2 2 4 3 3 3 3 3 3 3 5 6 7 4 4 4 4 4 4 4 8 9 5 5 5 5 5 5 5 10 11 12 13 6 6 6 6 6 6 6 14 7 7 7 7 7 7 7 15 8 8 8 8 8 8 8 16 9 9 9 9 9 9 9 17 18 シート2 A B C D E F G 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 10 11 12 13 14 15 16 17 18 ・ ・ ・ ・

  • エクセル関数で、行を挿入した時にADDRESS関数の行番号を変える方法を教えてください

    エクセルで収入と支出と利益を計算する単純なシートで、数年に渡る月次のデータ(sheet2)から、sheet1で指定した特定の期間の3ヶ月の収入や支出を検索として合計をする関数を作成しました(sheet2の右の方の罫線の箇所)。 SUM関数とINDIRECT関数、ADDRESS関数、MATCH関数を組み合わせているのですが、この状態で例えば収入(2)の後ろに収入(3)を挿入しようとすると、ADDRESS関数の行番号(ADDRESS(7,MATCH~)の数字の7のところ) が自動的に8に変わらないので、都度関数を修正しなければなりません。行を挿入したり削除したりしたら、ADDRESS関数の行番号も増えたり減ったりするようにできる方法はないでしょうか。 もしくは、そもそももっと簡単で使いやすい関数はないでしょうか。 教えていただけるととても助かります。

  • EXCEL2000で関数INDEXとMATCHを使った際の表示について

    EXCEL2000で関数INDEXとMATCHを使った際の表示について お聞きしたいのですが、別シートでリストが有りそのリスト内のリストNoを別シートで入力すると項目が自動表示される様に関数を入力したのですが、リストでは1行に2段表示にして作成しているのですが別シートに自動表示した際1行で表示されます。リストと同じ表示するにはどうすればよいのでしょうか、わかる方宜しくお願いします。 ちなみにわかりずらいかもしれませんが現在下記の様に表示されます。 現在の関数式 =INDEX(**リスト!$B$4:$B$50,MATCH(**データ!D2,**リスト!$A$4:$A$50,0)) 表示例 (リスト側)        (データ側)     A(列)           A(列)  1(行) あああ    1(行) あああいいいいい   いいいいいい 

  • [Excel VBA]複数ファイルで条件を満たす行

    Office 365を使用しています。 下記の条件で行削除したいのですが、マクロではどうのよに記述したら良いでしょうか? ・対象のExcelファイルが↓3つあります >グループリスト >一般顧客 >特別顧客 条件; >グループリストファイル; F列 ---- 1-1 'グループ番号 D列 ---- XXXX '顧客番号 ・グループ番号 1-1のすべての顧客番号が削除対象 処理; 1. >一般顧客ファイル A列 ---- XXXX-XX 'サブ顧客番号 B列 ---- XXXX '顧客番号、グループリストファイルのD列 ・B列、グループリストファイルのD列がマッチした全行を削除して、削除件数をカウント 2. >特別顧客ファイル H列 ---- XXXX-XX 'サブ顧客番号 ・H列、一般顧客ファイルのA列がマッチした全行を削除して、削除件数をカウント *一般顧客ファイルでマッチした行の削除前に、特別顧客ファイルの対象行を削除する必要があると思います

  • Excelの関数

    Excel2000にて行を削除するとあらかじめ指定してある関数の範囲が変わってしまいます。 どうすれば行を追加、削除しても関数の範囲をそのままにできるのでしょうか? =COUNTIF(sogo_org!$I$2:$I$120,"11GB107") の関数のうち$I$120のところが追加されると関数を認識しないし、削除すると たとえば10行削除すると$I$110に変わってしまいます。

  • EXCEL関数について質問です

    EXCELで同窓会旅行用の名簿を作っているのですが、下記のような動きをするEXCEL関数って作ることができますか? 具体的な方法を教えていただけると嬉しいのですが。。。 ・シート Sheet1に名簿一覧がある(例:A列は名前一覧、B列は部屋番号の空欄) Sheet2に部屋番号一覧がある(例:A列は部屋番号一覧、B,C,D列は名前の空欄) ・動き Sheet2のB,C,D列の名前の空欄に名前を入れていくと、 Sheet1の名簿の名前に対応した部屋番号がB列に自動で挿入される 万が一、Sheet2のB,C列(名前欄)で名前が重複してあった際には Sheet1の名簿に対応したB列に「エラー」と表示される ※Sheet1の名簿の名前(A列)は既に記入済みです。 ※Sheet2に部屋番号(A列)は既に記入済みです。 以上、お手数ですがよろしくお願いいたします。

専門家に質問してみよう