• ベストアンサー

EXCEL 2つシートを参照して

2つのビジネス・エクセルシートがあります。一つは型名と数量です。もう一つは型名と価格です。2つのシート内の型名が一致した場合、「型名と数量」のシートの同一シートの行に価格を入れることが出来るようなソフトはありませんか? 但し、2つのシートの型名の数は一致しませんので、全部ソートして貼り付けポンでは出来ません。宜しくお願いします。

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

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

>出来るようなソフトはありませんか 売れるような内容ではありません。 一番拙い、私の嫌いな「総舐め法」でVBAで組んで見ました。 データ数が多いと、比較必要回数が多いので終わるまで時間がかかるかもしれません。最近のパソコンの処理速度は超向上しているので、へっちゃらかもしれません。結果が聞きたいです。 ツール-マクロ-VBE-挿入-標準モジュール で出る画面に下記を貼りつけ。 実行(F5キー)。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") 'sheet1->実際のシート名 Set sh2 = Worksheets("sheet2") 'Sheet2->実際のシート名 d1 = sh1.Range("a36652").End(xlUp).Row d2 = sh2.Range("a36652").End(xlUp).Row MsgBox d1 & " " & d2 For i = 2 To d1 '2->実際のデータスタート行 For j = 2 To d2 '2->実際のデータスタート行 If sh1.Cells(i, "A") = sh2.Cells(j, "A") Then sh1.Cells(i, "C") = sh2.Cells(j, "B") Exit For End If Next j Next i End Sub 上記ではSheet1,2のA列を比較して、一致したら Sheet1のC列にSheet2のB列を持ってきています。類推でそれらの列が変ったり、増えたりした時に どう変えるべきか判りますでしょうか。 (テストデータ) Sheet1 型名 数量 h 23 a 12 b 34 c 45 d 65 e 78 g 26 Sheet2 型名 価格 a 12 d 13 g 14 b 15 e 16 (結果) Sheet1 型名 数量 価格 h 23 a 12 12 b 34 15 c 45 d 65 13 e 78 16 g 26 14 取り急ぎで組んだのでバグを心配してますがロジックは単純です。Sheet1の1行を固定して見て、Sheet2の全行を眺め回して探してます。

djkatoon
質問者

お礼

出来ました!有難うございます。丁寧なコメントも頂きましたので、IF文の部分も多少変更して好きな列での挿入が可能でした。時間はそんなには掛かりませんでしたよ。ただ、これをマクロ化はどうすればいいのかを試行錯誤しているのですが・・・。VBAは多少(かなり)しかわからないものですから。。。

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

#3のmshr1962です。 検索値はセル参照で大丈夫です。 A2に型名,B2に数量があって、Sheet2のA列に型名B列に価格とすると =VLOOKUP(A2,Sheet2!$A$2:$B$100,2,FALSE) の用にすればできます。 ただ、検索値に該当するデータがない場合は、#N/Aが表示されます。 これを回避する場合はIF文を使って =IF(ISNA(VLOOKUP(..)),"",VLOOKUP(..)) のようにすれば、別の値(上記はブランク)にできます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

方法1 型名・数量にすべての型名があるなら =VLOOKUP(型名のセル,型名・価格の絶対参照範囲,2,FALSE) で下方にコピー 逆の場合は型名・価格のシートで型名・数量の範囲を指定 方法2 「データ」「ピボットテーブル」で「複数のワークシート範囲」で 「型名」で二つの範囲をリンクさせる。

djkatoon
質問者

補足

回答有難うございます。VLOOKUPを調べてみましたが、 VLOOKUP(型名,~)のようなかたちですと、型名の入力が必要となり、かなり大変です。毎月「型名・数量」のリストと「型名・価格」のリストが出てきて、その度に入力となってしまう為です。この場合、どうなんでしょうか?すいませんが、宜しくお願いします。

  • madogiwa
  • ベストアンサー率12% (4/32)
回答No.2

ソフトではありませんが、エクセルの関数(VLOOKUP)を使用すればできますよ? 関数の使用方法等については、エクセルのヘルプを参照して下さい。

  • akio_myau
  • ベストアンサー率34% (515/1480)
回答No.1

VLLOKUP関数で 型名から価格を参照する式を作成したらどうでしょうか。 例えば、 =VLOOKUP(型名の場所,型名と価格のシートの範囲,2) のような形の式で