• ベストアンサー

比較のマクロについて(エクセル)

vbaについておしえてください。 シート1とシート2を比較して不一致がある項目にに色をつけたいです。 例えばですがシート1の 1行目の番号1and 品名りんごand金額 1 (3セット) の3箇所のデータがシート2になければ、色をつけたいのです(シート1に) 初心者のためコードをご教示いただけますと幸いです。 宜しくお願い致します。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

プログラム的に(初心者だからか)よく考えられて、説明されていないのではないか。だからどうしたらよいのかよく判らない。 「比較」と一言で言うものではないように思うが。 このロジック(コンピュータ―処理の仕方)は、質問者自身が、どうすべきか考えるべきだ。 プログラムコード作成の初心者と、ロジックをどうするか、は別の話(知識、経験、知恵)だ、と思う。 どう処理するか、これを鍛えないと、VBAを勉強してもダメである。 >コードをご教示いただけますと幸い、と言う前に、どういうロジック、処理をすべきかを、それだけででも、主題にして、まず質問をすべきだと思う.丸投げ質問になる。 普通は3列の3項目どの項目かを主(または主+副)に考えて、そのデータで「探す」ことをして、残りの項目について、同じかどうかと考えることになることが多いのではないか。 3項目とも平等に考えるなら、両シートとも、A,B,C列について,A列、B列、C列のデータを結合データをD列に作り、Sheet1のA+b+c列の結合したD列の、各行データについて、Sheet2のA+B+Cの結合データD列を探し、見つかれば色を消す、見つからないものは、色がそのまま、にするのはどうか。これが一番やさしそうに思うがどうかな? 結構むつかしいもののように思う。 上記の感想は如何?

tumo0804
質問者

お礼

ありがとうございます

関連するQ&A

  • エクセルで、二つのデータの比較、抽出について

    こんばんは。エクセルで困っていますので、皆さんのお力をお借りしたいと思います。 シート1 コード 商品名  金額 15   りんご  500円 33   みかん  200円 22   かりん  350円 シート2 コード 商品名  金額 15   りんご  500円 45   メロン  1200円 90   すいか  3000円 と二つのシートにそれぞれデータがあります。 そのシートを比較して、 シート3に コード 商品名  金額 33   みかん  200円 22   かりん  350円 45   メロン  1200円 90   すいか  3000円 と、一致しないデータを表示させたいと思います。 この場合、シート3にどのような関数を使用するのがいいのでしょうか? VBAでやったほうが良いのでしょうか? 色々と考えているのですが、一反頭を真っ白にして皆さんの意見を聞きたいと思います。 よろしくお願いします。

  • エクセル セルの比較

    セルの比較について教えてください。 A1~A10と、B1~B10に文字が入っています。 Aがりんごのときは、Bは果物、 Aがキャベツのときは、Bは野菜 となっていなければなりません AとBの同じ行のセルの内容が、この条件と一致しないものが、1行から10行までひとつでもあった場合に、C1に『一致していない箇所があります』と出るようにしたいです。 マクロは使わないでお願いします。

  • 関数 or マクロ(エクセル)

    行の項目と列の項目を検索して重なる部分のデータを拾いたいのですがどうもうまくいきません。初歩的なことかもしれませんが、VLOOKUPとHLOOKUP関数をあわせたようなもの。LOOKUPウィザードでもやってみるのですがうまくいかないのでよろしくお願いします。(最終的にVBAでやりたいです) 元のデータは、(Sheet3)にあって(Sheet2)で項目を並べ縦と横の項目に一致するデータを持ってきたいです。 Sheet3にあるデータは、別のブックよりVBAで検索したデータを持ってきています。 また、Sheet1、2ともその都度行数(検索項目数)が変わるので、できればデータシートの行数にあわせて行きたいのですが・・・こうなるとVBAになると思い挑戦しているのですがこれがまたうまくいきません。 で、データの行数にあわせて拾い出し、A列で最終行を検索して、L列~W列の各列の3行目に、5行目~最終行までの合計を取ろうと思っています。 説明が下手ですみませんが、よろしくお願いします。 環境:Win2000、98 Office2000です。

  • Excelマクロでセルの比較

    Excelマクロでセルの比較 まだマクロ初心者なので、詳しいことがわからなくて困っております。 例)●前提として何行目まであるかは変化します     (A列)(B列) (1行目) 35  35 (2行目) 26  26 (3行目) 13  13 (n行目) 12  12 ※n=最終行 【やりたいこと】 このようにシートに入力されていたとして、 「A1=B1?」⇒「A2=B2?」⇒「A3=B3?」⇒「An=Bn?」と比較を進めていき不一致の有無を出す。 もし不一致がなければ、そのまま通過しその次のマクロを実行していく。 不一致があった場合には、不一致の行を別ファイルに出力してファイル保存し、ファイルを閉じる。 マクロを実行している元のファイルは、保存せずにファイルを閉じる) 行の長さが変化するため、その変化にも対応した処理を実行したいと思っております。 本やサイトで調べてみたのですが、基礎知識がないためうまく処理をさせるマクロを作ることが出来ませんでした。 このようなマクロが可能なのかもわかりませんが、出来ましたらこのマクロを教えていただけますでしょうか。 宜しくお願いいたします。

  • EXCELのマクロで条件2つでの合計

    現在シート1に以下のようにあります。 sheet1   A    B    C   D   E 1 品名  日付  担当 個数 チェック 2 いちご 1/10  伊藤 10   ○ 3 りんご 1/15  山田  2   ○ 4 ばなな 1/10  伊藤  5   × 5 いちご 1/20  伊藤  10  △ 6 いちご 1/7   山田  5   ○ 7 ばなな 1/8   江口  5   △ 8 りんご  1/4  江口  4   ○ 9 りんご  1/18 伊藤  5   ○ 10 ばなな  1/8  伊藤  6   × 11 いちご  1/20 江口  4   ○ これを以下のようにシート2にしたいです。 sheet2   A    B    C   D   E 1 品名  日付  担当 個数 チェック 2 いちご 1/10  伊藤  20  ○ 3 りんご 1/15  山田  2   ○ 4 ばなな 1/10  伊藤  11  × 6 いちご 1/7   山田  5   ○ 7 ばなな 1/8   江口  5   △ 8 りんご  1/4  江口  4   ○ 9 りんご  1/18 伊藤  5   ○ 11 いちご  1/20 江口  4   ○ 条件は、「品名」と「担当」が同じならば個数を合計してシート2にコ記すということです。 また、「日付」と「チェック」は照合した一番上の行の「日付」と「チェック」になります。 例えば、2行目と5行目は「いちご」と「伊藤」で同じなので合計を10+10で20にします。 「日付」と「チェック」は2行目の方が上なので「1/10」と「○」になります。 以上をマクロでやりたいです。 マクロの勉強中なので色々なやり方を知りたいです。 よろしくお願いします。

  • エクセル、比較、コピー、貼り付けのマクロ

    エクセルについて 同じシート内にあるB列2行目から66行目までとI列2行目から333行目までの セルを比較し、 B列2行目とI列2行目がおわったらB列2行目とI列3行目を比較という流れになる。 I列の比較が333行目まで終わったら、B列3行目とI列2行目を比較し、終わったらB列3行目とI列3行目を比較していきます。 同じ数値のセルがあったら (1)A列~E列(行は値が一致した行)をコピー (2)H列~L列(行は値が一致した行)をコピーし、 (1)はM列に貼り付け (2)はR列に貼り付け VBAのコードは以下の様になります Sub t() x = 2 y = 2 g = 1 n = 1 Do Do If Cells(x, 2) = Cells(y, 9) Then Range(Cells(x, 1), Cells(x, 5)).Copy Destination:=Cells(g, 13) Range(Cells(y, 8), Cells(y, 12)).Copy Destination:=Cells(n, 18) y = y + 1 g = g + 1 n = n + 1 Else y = y + 1 End If Loop While y < 334 Loop While x < 67 End Sub これを実行すると実行エラー1004 アプリケーション定義又はオブジェクト定義の エラーになります。誰か回答をお願いします。

  • エクセルでのマクロを教えて

    下記のようなものをみたすマクロは組めますか? ファイルにシートが何種類かあります。 sheet1には各店の集計データーがあります。 その中にA列には集計の項目名がAZ列まであり 1行目には店舗名が10種類あります。 sheet2からはsheet名をsheet1に記入されている1行目にしている店舗名にしてあります。 またA列には集計の項目名がありますが sheet1にある項目と全く同じではなく 項目は少なくなっています。 また、sheet2からの店舗名にはsheet1の集計表にはない 店舗名もあります。 このsheet1のデーターをもとに sheet2の1行目の項目と一致する項目の値や数字を sheet1からコピーするというものです。 よろしくお願いします。

  • 他シートのセルを比較する方法

    題名記載の詳細を以下に記します (状態)  シート1   →比較対象  シート2   →セルに記載した内容はシート1と比較して列行がバラバラ (困っている点)  上記状態の2つのシートを、マクロで比較させて、条件が不一致のセルの色(何色でも)を変化させようと考えています ただ、どうもうまくいかず有識者の知識をお借りしたいと思い投稿しました 直接コードを記述頂ければ助かりますが、類似のサイトがあれば自主的に学習しますので、アドバイスを頂ければ幸いです 因みに、私のVBA知識はほぼ初心者です

  • Excelマクロの大量行の処理速度を上げたい

    Excel VBA 勉強中です。 Excel VBA を利用して大量の行の処理をしたいのですが、時間がかかってしまい、場合によっては固まってしまうので困っています。 色々と調べながら自分で作ってみたのですが、少量の行で試しに行った時にはきちんと動いたのですが、大量の行で行った時には固まってしまう(動かなくなってしまう)ので困っています。 転記先(シート1)には番号とコードが入っていて、基データ(シート2)にある番号とコードが一致した場合のみ基シート(シート2)にある日付を転記先(シート1)へ転記させたいと思っています。 ・シート1にもシート2にもそれぞれ、データが10000行ぐらいあります。 シート1(転記先) D列   E列    I列 番号   コード   日付←転記させたいセル 12345   123    4/30 23456   234 34567   345 シート2(基データ) B列   G列    I列 番号   コード   日付 23456   123    3/31 12345   123    4/30 45678   345    5/1 Dim sh1, sh2 Set sh1 = Sheets("シート1")  ’転記先 Set sh2 = Sheets("シート2")  ’基データ d = sh1.Range("A65536").End(xlUp).Row On Error Resume Next For i = 2 To d r = 2 d1 = sh1.Cells(i, 4) & sh1.Cells(i, 5) d2 = sh2.Cells(r, 2) & sh2.Cells(r, 7) Do While d2 <> "" If d1 = d2 Then sh1.Cells(i, 9) = sh2.Cells(r, 9) Exit Do End If r = r + 1 d2 = sh2.Cells(r, 2) & sh2.Cells(r, 7) Loop Next i どこがいけないのか、教えていただけると大変助かります。

  • 文字検索&比較するマクロ

    10年前と現在の生徒の成績を比較する作業をしています。 作業内容は、 シート1(10年前) 学年 国語 数学 理科 社会 英語 音楽 1-1-1 90 85 65 78 89 合格 1-1-2 65 54 43 43 92  不可   ・   ・   ・ 3-10-40 シート2(現在) 学年 国語 数学 理科 社会 英語 音楽 1-2-3 94 65 75 78 89 合格 2-1-4 75 64 43 43 92  不可   ・   ・   ・ 3-8-42 上記のようなデータがそれぞれsheet1,2に入っています。 私がやろうとしているのは、 1.シート1の学年をシート2に参照させて一致すればシート1と2の各項目を比較させる。 2.シート1とシート2の各項目の点数が同じなら次の項目を比較し、違った時点でシート2の該当項目セルの色を変える。 3.シート1の学年がシート2にない場合はシート3にピックアップする。 ことを試みています。 学年の並びは変えたくないのでこのままで比較を行っていきます。 プログラムを作ってみたのですが、うまくいきません。 どなたかヒントだけでも構いませんのでご教授ください。 本当ならここに私が作成したプログラムを記載するべきなのですが、データを学校に置いてきてしまったため記載できません。申し訳ありませんがよろしくお願いします。