• 締切済み

エクセル(マクロ?)の照合についてです。

関数やマクロを全く知らない素人で恐縮ですが、 ご教授くださると幸いです。 アとイ2つのシートがあり、両シートのCDE列には2桁から4桁までの 数値が各々ランダムに300行ほど入ってます。 そこで、アの各行に「イのCDE列と全て同数もしくは プラス、マイナス5以内までの行があるか」を照合したいものの、 他にもシートが多く困っています。 ※このような作業はエクセルだと無理でしょうか? 大変恐れ入りますが、よろしくお願い申し上げます。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

>・・行があるか」を照合したいものの、 >他にもシートが多く困っています。 どの様な表示が使いやすいのわかりませんが アのシートのA1セルに 照合する対象のシート名を入れておきます 仮に A1に イ と入れます。 アのシートは   A  B  C  D  E  F  G  H 1 イ F列に =INDIRECT($A$1& "!C" &ROW(A1)) G列に =INDIRECT($A$1& "!D" &ROW(A1)) H列に =INDIRECT($A$1& "!E" &ROW(A1))と入れて下までたっぷりとコピィしておきます。 A1セルに対象のシート名を入れると、そのシートのCDE列が表示されると思います。 後は別の列に関数を入れるとか、条件付書式で色を付けて表示させるとか 方法があると思います。

kenbi73
質問者

補足

あまり質問コーナーを使いきれておらず「補足をつける」が良いのか 「回答・・・」なのか迷いましたが、分かりづらい文章で申し訳ございませんでした。m(_ _)m それなのにご返答くださり、誠にありがとうございます。 回答番号No1様に補足を書きましたので、お時間が許すのであれば 補足等をご記入くださると幸いです。 関数を入力するのも一苦労な為、手引書と格闘しながら今日中に試してみます。(>_<)

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

300行程度なら,なんとか関数で出来そうな範囲です。 ご説明が不十分ですが,CはC,DはD,EはE同士で比較すればいいのですね? B1に =IF((COUNT(C1:E1)=3)*SUMPRODUCT((ABS(Sheet2!$C$1:$C$300-C1)<=5)*(ABS(Sheet2!$D$1:$D$300-D1)<=5)*(ABS(Sheet2!$E$1:$E$300-E1)<=5)),"有り","") など。

kenbi73
質問者

補足

早速のご返答ありがとうございます。説明不足で大変申し訳ございませんでした。m(_ _)m >CはC,DはD,EはE同士で比較すればいいのですね? たしかに そうなのですが、「アの1行目:イの1行目」ではなく、 イの全行を対象に照合したいのです。 せっかくご回答くださったのに、分かりにくい文章で 本当に申し訳ございませんでした。m(_ _)m 現在、教えてくださった関数を どう入力するかで奮闘中です。 ※試すことすら下手ですみません。(>_<) 回答番号No1様に返答と詳細を書きましたので、それをご覧になり 万が一補足等あれば再度書き込みくださると幸いです。

  • soixante
  • ベストアンサー率32% (401/1246)
回答No.1

マクロだと解決できそうな気がしますが、 ご質問の「照合する条件」がはっきりしませんので、回答が付きにくいと思います。 「ア」シートの1行目、C~E列に例えば、「25,100,5200」とあったとして、 「イ」シートの1行目、C~E列の数値と照合するのですか? あるいは、「イ」シートの1~300行めのどれであってもいいので、「25,100,5200」の行があれば、 「3つとも全く同じ組み合わせ」と判定するのですか。 また、「プラス、マイナス5以内」といいますが、数値を一つ一つ比較するのか。 上の例で言えば、「24,101,5203」だったら条件を満たすのか、「5204,20,98」でも満たすのか、いろいろあると思うのです。 もう少し詳しく書かないと分かりにくいです。 また、照合結果をどのようにアウトプットしたいのかも分からないです。 「ア」シートのA列に結果を出す? 「3つとも同じ組み合わせ」 「プラス5以内の数値がひとつでもある。(あとは違う)」 「すべてプラス5以内」 とかいろいろあると思うんですね。 そのあたりを踏まえて書いてみてはどうでしょう。

kenbi73
質問者

お礼

早速のご返答ありがとうございます。説明不足で、大変お恥ずかしい限りです。m(_ _)m >「ア」シートの1行目、C~E列に例えば、「25,100,5200」とあったとして、 「イ」シートの1行目、C~E列の数値と照合するのですか? あるいは、「イ」シートの1~300行めのどれであってもいいので、「25,100,5200」の行があれば、 「3つとも全く同じ組み合わせ」と判定するのですか。 「イ」シートの1~300行めのどれであってもいいです。 全行から探したいと思います。 >上の例で言えば、「24,101,5203」だったら条件を満たすのか、「5204,20,98」でも満たすのか、いろいろあると思うのです。 前者「24,101,5203」であれば満たすと考えています。 >また、照合結果をどのようにアウトプットしたいのかも分からないです。 照合結果は、余白の どこの列や行に反映しても構いません・・・。 >「3つとも同じ組み合わせ」 「プラス5以内の数値がひとつでもある。(あとは違う)」 「すべてプラス5以内」なのか? C~E列に1つでも「プラス・マイナス5以内」があれば適合と思っています。 言葉が足りず本当に申し訳ございませんでした。 何とぞよろしくお願い申し上げます。 m(_ _)m

関連するQ&A

  • エクセルの照合についてです。

    関数を全く知らない素人で恐縮ですが、ご教授くださると幸いです。 アとイ2つのシートが別々のファイル内にあり、両シートのCDE列には2桁から4桁までの数値が 各々ランダムに300行ほど入ってます。 例     【アのシート】             【イのシート】   A  B  C  D  E       A  B  C  D  E                1       400 1200 60     1        200  30 600 2        50 800 200    2        1700 800 400 3      1900 300 500    3         900 600  10 そこで、アの各行に「イのCDE列と全て同数もしくはプラス、マイナス5以内までの行があるか」を照合したいものの、他にもシートが多く困っています。 希望(1) 「アの1行目:イの1行目」を比較するのではなく「アの1行目:イの全行」を比べたいです。 希望(2) 『イのシートから、CDE列セットで全てが±5以内の行』を探したいです。 希望(3) 上記アの1行目だと「C 395,D1204,E58」は適合しますが、       同数であっても「 C1204,D 395,E58」はCとDが逆なので不可です。       もちろん「C395,D1204,E66]も不可です。Eがプラス6なので。 希望(4) 結果はアのシート内P列に反映させたいと思います。 大変恐れ入りますが、よろしくお願い申し上げます。m(_ _)m

  • エクセルの関数が突然「#VALUE!」に。

    エクセルの関数が突然「#VALUE!」に。 素人で恐縮ですが、ご教授くださると幸いです。 アとイ2つのシートが別々のファイル内にあり、両シートのCDE列には2桁から4桁までの数値が 各々ランダムに300行ほど入ってます。 例     【アのシート:調べたい側】        【イのシート:データベース側】   A  B  C  D  E            A  B  C  D  E                1       400 1200 60          1        200  30 600 2        50 800 200          2        1700 800 400 3      1900 300 500          3         900 600  10 そこで、アの各行に「イのCDE列と全て同数もしくはプラス、マイナス5以内までの行があるか」を 照合したいものの、他にもシートが多く困っています。 希望(1) 「アの1行目:イの1行目」を比較するのではなく「アの1行目:イの全行」を比べたいです。 希望(2) 『イのシートから、CDE列セットで全てが±5以内の行』を探したいです。       CはC、DはD、EはE同士での比較です。  希望(3) 上記アの1行目だと「C 395,D1204,E58」は適合しますが、       同数であっても「 C1204,D 395,E58」はCとDが逆なので不可です。       もちろん「C395,D1204,E66]も不可です。Eがプラス6なので。 希望(4) 結果はアのシート内P列に反映させたいと思います。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 上記の用途で過去に関数の質問をしたところ、とある方から下記をご教授くださり使っておりました。 B1に=IF((COUNT(C1:E1)=3)*SUMPRODUCT((ABS(Sheet2!$C$1:$C$300-C1)<=5)*(ABS(Sheet2!$D$1:$D$300-D1)<=5)*(ABS(Sheet2!$E$1:$E$300-E1)<=5)),"有り","")など。 しかし順調に使っていた先日、実は急に全セルが「#VALUE!」と表示されるようになり対応に苦慮しております。 新たな関数を入力したり等、何も手を加えず(削除せず)普段どおり使用しての出来事でした。 教えてくださった方との連絡手段もなく、再度ここに投稿した次第です。 お暑い中、大変恐れ入りますが何とぞアドバイスをくださると幸いです。 どなたかお時間が許すのならば、よろしくお願い申し上げます。m(_ _)m

  • エクセルのマクロ作成で困ってます

    マクロ初心者です。 ”Sheet1にあるデータについて、複数条件で抽出後、Sheet2の表に転記” という動作をマクロで組みました。 ここまでは良かったのですが、Sheet2に転記する際、下記の様にさらに条件を付加したいと思っています。 やりたいこと(ア) Sheet1で条件によりたとえば10個のデータを抽出できたとし、 1~6個目までは、Sheet2の1行~6行に転記、 7~10個目までは、Sheet2の11行~14行に転記。 ※”6個目まで1~6行に転記”というのは決まっているのですが、  この10個というのは、例であって、5個だったり、14個だったり、  抽出したデータにより異なるので、変数です。 やりたいこと(イ)   Sheet1から、さらに別の条件で抽出したデータを、  やりたいこと(ア)の10個目を転記した行のあとすぐ(例でいうと15行目)から転記したい。  ※やりたいこと(ア)で抽出した条件が6個以下だった場合、11行目から転記。 以上の2つです。 条件の抽出までは出来るのですが、 (ア)の7個目から別のところに転記 (イ)の別の条件で抽出したデータを(ア)の次(6個以下の場合は11行目)から転記 をどうやって組んだら良いかわかりません。 もし分かる方がいらしたら、 どのようなコマンド(?)を使ったら良いのか、 ご教示いただけると助かります。 よろしくお願いします!

  • 照合した結果によって決めた値を転記するマクロ

    シート1には A~F列まで値があり、行数は都度相違し約15,000行くらい。 データは2行目から開始です。 シート2には A~AE列まで値があり、行数は都度相違し約5,000~25,000行 あり同じくデータは2行目からです。 シート1の行ごとに A列,B列,C列の順で連結した値と シート2の行ごとに F列,G列,B列の順で連結した値を 照合させます。 その値が (1)シート1にもシート2にもある場合は   シート2のAF列に1と転記 (2)シート1には無いがシート2にはある場合は   シート2のAF列に2と転記 (3)シート1には有るがシート2には無い場合は   シート2のAF列に3と記入 シート2のデータのある行まで 作業を繰り返すマクロの記述を教えてください。 VLOOKUPを使用したマクロを作成しましたが 判定1,2,3の転記がうまく出来ないのと VLOOKUPが重すぎて処理が遅すぎるので 速く処理が出来るとうれしいです。 例 シート1 A2=XXXX B2=1234 C2=5678 シ-ト2 B2=1234 F2=XXXX G2=5678 シート1の値=XXXX12345678 シート2の値=XXXX12345678 照合する ↓(一致なので) シート2のセルAF2に1と転記

  • エクセルで別シート同士の照合結果を抽出

    シート1(担当者アの案件): A列に会社名 B列に担当者名 シート2(担当者イの案件): A列に会社名 B列に担当者名 シート3(担当者未定の案件): A列に会社名 B列に担当者名 シート4 シート1とシート3を照合して、シート1に存在する場合、シート4に抽出 シート2とシート3を照合して、シート1に存在する場合、シート4に抽出 としたいのです。やり方を教えていただけますでしょうか。 ちなみに結果の抽出はシート4でなくてもどこでもいいのです。 お手数ですがよろしくお願いいたします。

  • Excel(2000)で行毎にセルをみて、値を返す

    例えば、以下のようなデータがあったとして、各行毎に左から見た結果、最初にデータがあったセルの列の1行のセルの値を各行のG列に返したい。 ______A__B__C__D__E__F__G__ 1行_ア__イ__ウ__エ__オ__カ____ 2行_1__3__5__2__4__1__ア__ 3行_____2__5__1__5__4__イ__ 4行_____________2__8__2__エ__ 5行_____2______2__1__4__イ__ 6行_________5______2______ウ__ G列に結果。 例えば、G3のセルに何らかの関数を入れて、A3~F3を左から見た結果、B3に2というデータがあるので、その列の1行であるB1の値、イをG3に返すといったないようです。 _ は、スペースをとるためのものです。 実際のデータは500行あり、各行の検索する列数は23列あります。 よろしくお願い致します。

  • エクセルマクロ シート間の照合_上書き

    マクロ初心者です。(エクセル2003使用) Sheet2の管理番号をSheet1の管理番号と照合し、同じであれば、数量など3項目を上書きするマクロを作ろうとしています。 (Sheet1:日々更新される元データ)全データ数約500件くらい A列   ,B,  C,  D,   ・・・ 1行 管理番号,品名,注文数量,出荷数量,・・・ (Sheet2:上書きさせたいシート)全データ数約80件くらい G列   ,H,  I   J      9行 管理番号,品名,注文数量,出荷数量 ↑シート2にある管理番号をもとに数量などを照合&上書きをしたいのです。 ■シート1も2も行数は日々変動します。 ■シート1で、まれに同じ管理番号が2つ存在することがありますが、取り出したい数量などのデータは、常に1番目に照合する管理番号です。 Sub シート間照合と上書き() Dim i As Integer a = Worksheets("sheet1").Range("a65536").End(xlUp).Row For i = 2 To a If Worksheets("sheet1").Range("A2") = Worksheets("sheet2").Range("G9") Then Worksheets("sheet1").Cells(1, i) = Worksheets("sheet2").Range("G9") Worksheets("sheet1").Cells(2, i) = Worksheets("sheet2").Range("H9") Worksheets("sheet1").Cells(3, i) = Worksheets("sheet2").Range("I9") While Cells(1, i) <> "" i = i + 1 Wend End If Next End Sub ■上記 模索しながらマクロを作ってみたのですが、エラーにはならないのですが(F8)、まったく動きませんでした。 すみませんが、お力をかしてください。 よろしくお願いいたします。

  • エクセルで二つのシートの照合をしたい

    エクセルでレイアウトの同じ二つにシートがあります。 このシートを照らし合わせてセルのデータの異なる部分を抜き出したいの ですが、よい方法はありますでしょうか。 シートが150列・2万行と大きなものでIF関数などを使って照合して みましたが、時間がかかりすぎました。

  • 2つのデータを照合したいです

    お客様から送られてくるエクセルの注文データと、自社で管理している注残データを照合し、お客様の注文データにあって自社注残データにないもの=新規注文データのみを別シートに抽出したいです。 これを行うにはマクロでいいのでしょうか? エクセルのシート1にユーザー注文データ。 シート2に自社注残データ。 この状態でマクロ実行→新たにシート3が作られ、照合できない新規注文データのみを抽出。 ということをイメージしています。 シート1(ユーザー注文データ)のI列に型式、F列に数量が入っています。 シート2(自社注残データ)のI列に型式、J列に数量が入っています。 この型式・数量の2項目を照合したいのですが、ユーザーデータには型式の頭に「P (Pと半角スペース)」が全数ついています。 このP+スペース以降の型式が照合対象です。 型式・数量が一致しないものを新たにシート3を作成しそちらに抽出したいです。 データ数は大体100行程度。 シート1・2共に1・2行には項目タイトルが入っているので、3行目からデータが始まります。 自分で作成しようとVBAの本を買ってきて勉強中なのですが、超初心者なので、まだまだ時間がかかりそうです。 どなたかお知恵を貸していただければと思います。 よろしくお願いいたします。

  • エクセルで照合に適切な関数を教えてください。

    すっごく困っているのでよろしくお願いします。 sheet1・・・Aの情報  sheet2・・・Bの情報 sheet3・・・二つの照合結果 A・Bはそれぞれ入力件数、並び順(行・列)もまったく違います。 例) sheet1・sheet2  A列・・・都道府県  B列・・・市区  C列・・・町 件数は同じ東京都○○区でもC列の町名が違った場合は、複数件になります。

専門家に質問してみよう