• ベストアンサー

EXCEL 2つシートを参照して

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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% (7418/18948)
回答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% (7418/18948)
回答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) のような形の式で

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

関連するQ&A

  • 【エクセル】複数シートの値を参照して連続で表示する(一覧シートを作る)には

    いつもお世話になってます。 エクセルで教えて下さい。 Sheet佐藤    品名   単価  数量  価格 1  いちご  100    5   500 2  ばなな  200    3   600 Sheet鈴木    品名   単価  数量  価格 1  めろん  500    1   500 2  ばなな  200    5  1000 と入力されていて、これを元に、 Sheet一覧    氏名  品名   単価  数量  価格 1  佐藤  いちご  100    5   500 2  佐藤  ばなな  200    3   600 3  鈴木  めろん  500    1   500 4  鈴木  ばなな  200    5  1000 と表示させたい。 Sheet佐藤・鈴木はそれぞれ行の追加・挿入・削除されることがあり、 その都度Sheet一覧に反映させられるようにしたいのですが、どのようにしたら可能でしょうか? (例えばSheet佐藤の2行目を削除した場合、 Sheet一覧    氏名  品名   単価  数量  価格 1  佐藤  いちご  100    5   500 2  鈴木  めろん  500    1   500 3  鈴木  ばなな  200    5  1000 となるように) また、タイトルとは質問が反れますが、 「価格」の列に「=B2(単価)*C2(数量)」という式が入っている場合、 1:式を変更されたくないので保護をかけたい。 2:保護をかけると行削除が出来ない。 3:行を挿入したら自動的に同じ式が入るようにしたい。 という希望を満たすにはマクロしかないでしょうか? (マクロは初心者でほとんどわからないので・・・) どうぞよろしくお願いします。

  • エクセル2007 VBA シート1に入力されている項目をシート2の中で

    エクセル2007 VBA シート1に入力されている項目をシート2の中で検索し、新規シートにコピーする方法についてです。 例) シート1 A        B  C 取引先名 品目C 数量 A      1-1 25 B      あ12  5 C      T-8 10 :       :    : シート2 A       B    C      D    E 得意先C 取引先名 製品名  品目C  数量 001    (株)B    ケーブル あ12  10 002    (株)A    箱     1-1  20 002    (株)A    箱     1-1   7 002    (株)A    箱     1-1   5 :       :     :      :     : 上記の状態で、シート1の項目をシート2から検索します。 ・取引先名は一部分でも一致するあいまい検索で、品目Cは完全一致で検索したいです。 ・シート2には検索項目のデータが複数あるのですが、結果が一致する行を選択し新規シートにコピーペーストしたいです。 出来れば下記の処理も実行したいです。 *シート1の数量を、シート2の1行目から順に検索したデータから計算して、シート1の数量に満たした分だけをコピーペーストしたいです。  シート1の数量に満たさない場合も取り敢えずシート2にある分のデータをコピーペーストして、処理が終わったら不足している項目データに印をつける。  取引先Aの場合→数量が20個と7個の行をコピーペーストする感じです。 グーグルで調べたのですが、調べ方が悪いのか最初から躓いてしまいました。 今回はコードを記入していなくてすみません。 サンプルコードありで教えていただけるととても助かります。よろしくお願いします。

  • エクセル 全部のシートを自動的に読み込みたい

    どなたが助けてください。 エクセルのファイルが一つのフォルダの中に 沢山あります。(CSVの場合もあります) 各ファイルには複数のシートが入っていて シート名はバラバラです。 各シートのに入っているデータは 縦は500行目まで、横は端から端まで(A列→IV列)です。 この沢山のエクセルファイルの全シートを 一つのシートに自動的に読み込んで 縦てに並べたいのです。 1ファイルの中にある全シート(1枚しかシートがない ものもあれば5枚あるものもあり もれなく全部) の500行目までを 別の新しいエクセルファイルのシートに縦に並べて 次のファイルをまた開いて全シートを 先ほど並べたデータの下にまた並べて・・・・と 繰り返して一つのフォルダの中にあるエクセルファイルの全シート重複せずに並べるような マクロをどなたか教えて頂けないでしょうか? ファイル数が大変多く、本当に困っています。 よろしくお願いいたします。

  • Excelで別sheetの参照について

    エクセルで別sheetの参照についての質問です。 画像のようにsheet1の値を参照してsheet2表示させたいのですが、これを約100件分作成したいのですがコピー&ペーストをすると参照セルがずれてしまいます。 sheet2のA1をコピーしてA4に張り付け=Sheet1!A2&Sheet1!B2&Sheet1!C2としたいのですが、A4に張り付けを行うと=Sheet1!A4&Sheet1!B4&Sheet1!C4となってしまいます。 複数行あけてペーストする場合に参照セルを1行ずつずらして参照する方法はありますでしょうか?

  • Excelのsheetを広げたらどのくらいの広さになるのかな?

    Excelのsheetを広げたらどのくらいの広さになるのかな? 2007では列が16,384 行が1,048,576 2003よりかなりセルの数が増えました。 2003の行を紙でつなげると「東京タワーぐらいの高さになる」と聞いたことがありますが、実際はどのくらいなんでしょうか? こんな質問ですがどなたか教えてください。

  • エクセルの他シート参照

    エクセルで、同ブック内の他シートのセルを、式で参照したいのですがうまく行きません。 Sheet1のL列のある行の内容をのSheet2のA15に参照したいです。 たとえば、30行目を参照するのであれば、 =Sheet1!$L$30 で参照できました。 しかし、Sheet2のA17にある数値から13850を引いた値の行(たとえば、13880とSheet2のA17に入力されていたら、30行目)を参照するために、 =Sheet1!$L$(A17-13850) と入力したのですが、「入力した数式にはエラーがあります」とエラーが表示されてしまいます。 (Sheet2のA17の値によって、Sheet2のA15に参照されるSheet1の行が変わるようにしたい) どのように指定したら正しく参照できるでしょうか。 ご回答よろしくお願いします。

  • VLOOKUPとINDIRECTで別のEXCELファイルのシートを参照したい

    EXCEL2007を使用しています。 添付画像のように、例えば、B2のセルには =IFERROR(VLOOKUP(A2,INDIRECT($B$1&"!a:b"),2,FALSE),0) という関数があり、VLOOKUPとINDIRECTを使って同じEXCEL内の 別のシートを参照するようにしてあります。 ※シートをそれぞれ 0910,0911,0912という名前にして各年月毎に 商品コードと数量を入れてあります。 この商品コードと数量が入ったシートを数量.xlsxという別のEXCELファイルにして このMAINのEXCELシートにデータを持ってきたいのです。 何か方法はありますでしょうか?よろしくお願いします。

  • エクセルで

    エクセルで、 VLOOKUP関数を使って、シート2枚目と数字が一致する物に関して、 抜き出して行こうと思っています。 でも完全一致ではなく例えば、 2170610105186 の数値を左2行右1行消した数字(7061010518)がシート2枚目の一致しているのを 探そうとする場合、関数を合わせることによってセルを抜き出すことはできるでしょうか? 誰か知っていれば教えてくださーい。

  • Excelで異なるシート間の参照

    シートAに 番号 名前 1 三井 2 佐々木 3 近藤 4 中村 5 石田 番号と、名前のデータがあります。 シートBには 番号 出身地 住所 電話番号 1 京都 2 沖縄 3 福岡 4 宮城 5 北海道 番号+αのデータがあります。 シートAの番号とシートBの番号が一致しているならば、シートAにシートBの情報を貼り付けたいのですが、そういう処理はExcelで可能でしょうか? マクロとかを使う必要があるのでしょうか?

  • エクセルのワークシートの大きさ

    エクセル2000のワークシートの大きさなのですが 私が持っている本には256列×65534行と書いてあります。 しかし インターネットで調べるとエクセルのバージョンにかかわらず セルの数は 256列×65536行 みたいです。 本に書いてあるのは正しいのでしょうか?

専門家に質問してみよう