• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:二つの表を比べてデータを拠出したい。)

二つの表を比べてデータを拠出する方法

このQ&Aのポイント
  • 二つの表を比較し、金額の高い商品を特定する方法について教えてください。
  • 商品コードが同じであれば商品名は必ず同じであり、金額は異なることがあります。
  • (1)(2)の表に掲載されている商品の中で、金額が高い方を特定し、セルに色を付けたいです。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.7

No.3です。 なかなかご希望通りにならないようですね。 >後に拠出する為に、分かり易くなれば良いのです とありますので、VBAになってしまいますが、 この際、一気にSheet3に抽出するようにしてみました。 Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択しVBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub 表示() 'この行から Dim i As Long Dim endR As Long Dim wS1 As Worksheet Dim wS2 As Worksheet Dim wS3 As Worksheet Set wS1 = Worksheets("Sheet1") '←「Sheet1」は実際のSheet名に! Set wS2 = Worksheets("Sheet2") '←「Sheet2」も・・・ Set wS3 = Worksheets("Sheet3") Application.ScreenUpdating = False wS3.Cells.ClearContents wS1.Rows(1).Copy wS3.Cells(1, 1) wS1.Columns(2).Interior.ColorIndex = xlNone i = wS1.Cells(Rows.Count, 1).End(xlUp).Row Range(wS1.Cells(2, 4), wS1.Cells(i, 4)).Formula = _ "=IF(COUNTIF(Sheet2!A:A,A2),IF(B2>VLOOKUP(A2,Sheet2!A:B,2,FALSE),1,0),"""")" wS1.Cells(1, 1).CurrentRegion.AutoFilter field:=4, Criteria1:="1" endR = wS1.Cells(Rows.Count, 1).End(xlUp).Row If endR > 1 Then Range(wS1.Cells(2, 2), wS1.Cells(endR, 2)).Interior.ColorIndex = 6 '←黄色に色づけ Range(wS1.Cells(2, 1), wS1.Cells(endR, 3)).Copy wS3.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlValues End If wS1.Columns(4).Delete wS1.AutoFilterMode = False wS2.Columns(2).Interior.ColorIndex = xlNone i = wS2.Cells(Rows.Count, 1).End(xlUp).Row Range(wS2.Cells(2, 4), wS2.Cells(i, 4)).Formula = _ "=IF(COUNTIF(Sheet1!A:A,A2),IF(B2>VLOOKUP(A2,Sheet1!A:B,2,FALSE),1,0),"""")" wS2.Cells(1, 1).CurrentRegion.AutoFilter field:=4, Criteria1:="1" endR = wS2.Cells(Rows.Count, 1).End(xlUp).Row If endR > 1 Then Range(wS2.Cells(2, 2), wS2.Cells(endR, 2)).Interior.ColorIndex = 6 Range(wS2.Cells(2, 1), wS2.Cells(endR, 3)).Copy wS3.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlValues End If wS2.Columns(4).Delete wS2.AutoFilterMode = False Application.ScreenUpdating = True End Sub 'この行まで ※ コード内の「Sheet1」「Sheet2」の部分はSheet名がついている場合、実際のSheet名にしてください。 ※ 両SheetのD列を作業用の列として使っていますので、データはC列までしかない!という前提です。 ※ Sheet3に抽出したデータのB列を両Sheetとも黄色に色づけするようにしていますが、 条件付き書式が設定してあるとB列に色が付きません。 ※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。 何とかご希望通りの動きになればよいのですが・・・m(_ _)m

choroq
質問者

お礼

何度も有難うございました。 試してみましたが、実行されません。 (応答なし)状態になります。 もしかしてデーター量が多くいのに、当方のPCのスペックが ついていけてないのかもしれません。 何度も本当に有難うございました。 なんとか自力で試してみます。 いろいろと感謝致します。

すると、全ての回答が全文表示されます。

その他の回答 (6)

noname#204879
noname#204879
回答No.6

[No.5お礼]へのコメント、 「そういう事になる」のなら、何れかのブックのシートを、他シートが存在するブックへ移動(またはコピー)して、1つのブック内の2枚のシートを比較させるのが得策です。 そうすれば、お互いに参照する範囲に[名前]を付けることによって、[条件付き書式]で各シートの「セルに色を付ける事」(「色でなくてもなんでも」)が簡単に可能になるからです。

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.5

[No.1お礼]へのコメント、 それから もう一つ。 》 こんな感じのファイルが2種類あります の「ファイル」は「シート」の間違いではないですよね? つまり、同じ“ブック”内の「こんな感じの」異なるシートでなく、「こんな感じの」シートが異なる“ブック”にあると?

choroq
質問者

お礼

何度も御指摘頂き有難うございます。 言葉足らずですみません。 元々名前の違う「ファイル」が二つ存在していました。 もちろん一つのファイルの他のシートにコピーすれば同じファイル内と いう事になりますし、最初からそのようにした方がアドバイスを頂く上で 早かったのかもしれないですね。 >つまり、同じ“ブック”内の「こんな感じの」異なるシートでなく、 >「こんな感じの」シートが異なる“ブック”にあると? そういう事になるかと思います。 今後は気を付けるように致します。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

ファイル1がシート1にファイル2がシート2にあるとしてデータはA,B,C列の2行目から下方にあるとします。 二つのシートでシート2にある商品コードはシート1に含まれる場合もあるがそうでない場合もある、含まれる場合にはその商品コードは一つしかないものとします。その場合にはシート2のA,B,C列の2行目から下方の行を選択します。その場合にはA2セルがアクティブな状態になっていますね。そこでホームタブの「条件付き書式」で「新しいルール」から「数式を使用して書式設定するセルを決定」を選択し、下の窓には次の式を入力します。 =AND(COUNTIF(Sheet1!$A:$A,$A2)>0,$B2>INDEX(Sheet1!$B:$B,MATCH($A2,Sheet1!$A:$A,0))) 同じ画面の「書式」をクリックして「塗りつぶし」のタブから好みの色を指定してOKします。

choroq
質問者

お礼

有難うございます。 試してみたのですが、 条件、条件付き書式に他のワークシートまたはブックへの参照は使用できません。 とエラーが出ます。 >ファイル1がシート1にファイル2がシート2にあるとして >データはA,B,C列の2行目から下方にあるとします。 >二つのシートでシート2にある商品コードはシート1に含まれる >場合もあるがそうでない場合もある、含まれる場合には >その商品コードは一つしかないものとします。 上記の通りに試しました。 何がいけないのでしょうか?

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 両Sheetを一つのブック(別Sheetで構いません)にまとめて、 条件付き書式でやってみてはどうでしょうか? (1)の表がSheet1・(2)の表がSheet2とします。 Sheet1のA列すべてを範囲指定 → 名前ボックスに仮に「コード1」と入力しEnter これでSheet1のA列が「コード1」と名前定義されます。 次にSheet1のA~B列を範囲指定 → 同様に名前ボックスに「範囲1」と入力しEnter Sheet1のA・B列が「範囲1」と名前定義されました。 Sheet2のB列すべてを範囲指定し、条件付き書式を設定します。 Excel2003の場合 Sheet2のB列すべてを範囲指定 → 条件付き書式 → 数式が・・・ ※ Excel2007以降の場合は 条件付き書式 → 新しいルール → 数式を使用して・・ 数式欄に =AND(COUNTIF(コード1,A1),B1>VLOOKUP(A1,範囲1,2,0)) と入力 → 書式 → 好みの色を選択しOK これでSheet2のB列金額がSheet1の金額を超える場合に色が付きます。 Sheet1にも同様の表示をしたい場合は Sheet2の同じ範囲を別名で名前定義しておき、 Sheet1のB列に同じ方法で条件付き書式の設定をします。 ※ 当然数式の名前定義部分が変わりますので、そこは名前定義したものに変更します。 こんな感じではどうでしょうか?m(_ _)m

choroq
質問者

お礼

早々に有難うございます。 使用しているソフトが抜けていました。 エクセル2007です。 大変失礼致しました。 教えて頂いた方法で一度試してみます。

choroq
質問者

補足

報告が遅くなりすみませんでした。 試してみたのですが、上手くいきません。 全然関係のないセルが何個かだけ色が変わりました。 全く条件には合っていないものも、合っているものもあります。 合わせて数個のみが変化しました。 なぜなんでしょうか?

すると、全ての回答が全文表示されます。
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

やりたいことは何となく理解しました。 で、どんなソフトを使う予定ですか? オススメはアクセスですが。

choroq
質問者

お礼

早々に有難うございます。 肝心な事が抜けておりました。 使用しているのはエクセル2007です。 申し訳ございませんでした。

すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.1

お申し越しの場合、「拠出」(キョシュツ)という言葉使いは間違っています。 「抽出」(チュウシュツ)のことですかね?

choroq
質問者

お礼

御指摘有難うございます。 抽出の間違いでした。 訂正してお詫び致します。

すると、全ての回答が全文表示されます。

関連するQ&A