• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのフィルタオプションについて)

エクセルのフィルタオプションで商品コードを転記する方法

このQ&Aのポイント
  • エクセルのフィルタオプションを使用して、商品マスタ.csvの「商品コード」を受注データ一覧.xlsに転記する方法を教えてください。
  • 商品マスタ.csvに含まれる「商品コード」「商品番号」「カラー」「色」と受注データ一覧.xlsに含まれる「商品番号」「カラー」「色」を比較し、一致する場合のみ「商品コード」を転記する方法を教えてください。
  • CSVファイルのデータが30万件以上あるため手作業が困難な状況で、エクセルのフィルタオプションを利用して「商品コード」を一括転記する方法を教えてください。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

横から失礼。下記ご質問の関係ですね。 http://okwave.jp/qa/q7643546.html 「xl2010を購入して」と記したのは、30万行のCSVを丸ごとワークシートに読みこんでから処理するという意味ですので、2003以前では無理です。 アクセスなら、クエリのデザインビューでちょこちょこっと結合線を結べば完成してしまいますが、ExcelVBAでやってみました。簡便のため、商品マスタ.csvと、受注データ一覧もcsv形式で保存して受注データ一覧.csvとし、共にデスクトップに保存してあるとします。新規ワークブックに下記マクロをコピペして実行すると、抽出できる筈です(小さなファイルでしか試しておりませんので、速度は不明)。しかしながら、SQLをお勉強していただかないと、応用は出来ませんね... Sub test() Dim cn As Object Dim rs As Object Dim connectionString As String Dim csvFilePath As String Dim mySQL As String Set cn = CreateObject("ADODB.Connection") csvFilePath = ThisWorkbook.Path 'CSVファイルにラベル(フィールド名)があるとする connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & csvFilePath & ";" _ & "Extended Properties=""Text;HDR=YES;FMT=Delimited""" cn.Open connectionString mySQL = "SELECT 商品マスタ.商品コード, 受注データ一覧.商品番号, 受注データ一覧.カラー, 受注データ一覧.色 FROM 受注データ一覧.csv AS 受注データ一覧 LEFT JOIN 商品マスタ.csv AS 商品マスタ ON (受注データ一覧.商品番号 = 商品マスタ.商品番号) AND (受注データ一覧.色 = 商品マスタ.色) AND (受注データ一覧.カラー = 商品マスタ.カラー);" Set rs = cn.Execute(mySQL) ThisWorkbook.Worksheets(1).Range("A1").CopyFromRecordset rs rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub

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

その他の回答 (5)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.6

#4です。 不適切な箇所がありましたので、訂正させて下さい。 両CSVと、マクロを記述したエクセルのブックを同一フォルダーに保存して実行して下さい。デスクトップには限られません。 エクセルブックは必ず保存後に実行しないと、ブックのありか(フォルダー)が確定しておれずエラーになりますので、ご注意下さい。

naraosaka12
質問者

お礼

お礼が遅くなり申し訳ありません。 お教えいただいたマクロで実行できました! 本当にありがとうございました!!!

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

>CSVファイルのデータが30万件以上あるため 確認ですが、ご使用のExcelは2007以降のバージョンでないのでしょうか? 一般的にOfficeソフトは、バージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。 今回のケースではフィルタオプションあるいは関数を利用すればおそらくご希望の作業ができると思われますが、もし2003以前の古いバージョンのエクセルを使用されているなら、csvファイルを分割してから処理を繰り返すことになります。 具体的な操作方法を知りたいなら、実際のデータベースシートやcsvファイルの表のレイアウトなどを具体的に例示されたほうが良いと思います。

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

両方のテーブルでの整列の順序は同じなのでしょうか?

naraosaka12
質問者

お礼

ご回答ありがとうございます。 解決いたしました。 次回質問する際はもう少し詳しく記述するようにいたします。

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

【やりたいこと】を達成するために、なぜ「フィルタオプションを使用」したいのか教えてください。

naraosaka12
質問者

お礼

ご回答ありがとうございます。 解決いたしました。 次回質問する際は理由までもう少し詳しく記述するようにいたします。

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

初めにCSVファイルでA2セルから下方に商品コード、B2セルから下方に商品番号、C2セルから下方にカラー、D2セルから下方に色のデータがそれぞれ入力されているとしたらE列を作業列としてE2セルには次の式を入力して下方にドラッグコピーします。 =B2&C2&D2 受注データのシートにはA2セルから下方に商品番号、B2セルから下方にカラー、C2セルから下方に色のデータが入力されているとしたら、D1セルには商品コードと文字を入力しD2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(COUNTIF(商品マスタ.csv!$E:$E,A2&B2&C2)=0,"",INDEX(商品マスタ.csv!$A:$A,MATCH(A2&B2&C2,商品マスタ.csv!$E:$E,0))))

naraosaka12
質問者

お礼

ご回答ありがとうございます。 お教えいただいた方法で試し解決いたしました!

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

関連するQ&A

  • エクセルのフィルタオプションの検索条件について

    ■受注データ.xls Sheet1    A      B     C     D 1  商品番号  カラー   サイズ  商品コード 2  123     白     M 3  123-A    BLK     S 4       ・ 5       ・  6       ・ ■商品マスタ.csv Sheet1    A      B     C     D 1  商品番号  カラー   サイズ  商品コード 2  123     白     M    AAA 3  123-A    BLK     S    AAB 4       ・ 5       ・  6       ・ 上記の受注データ.xlsの「商品コード」に、商品マスタ.csvの 「商品コード」を転記したいです。 ※「商品コード」は、「商品番号」「カラー」「サイズ」が同じ  場合のみ一致します。 CSVデータが30万件以上あるため、 商品コードが合致するデータのみ別シート、もしくは別ブックに データを抽出する形で行おうと思い、フィルタオプションを使用したいです。 この場合検索条件の数式をどのように指定すればいいでしょうか。 何卒よろしくお願いいたします。

  • エクセルマクロで一致データを検索

    エクセルのマクロを使用して以下のことを行いたいです。 (※VBA初心者なので解説を書いていただけるとありがたいです。) ・商品マスタのCSVを読み込む。  30万件以上あるので、エクセルでは表示できません。 ・読み込んだ商品マスタに記載されている商品コードを、  商品データ一覧のエクセルファイルに自動で転記したい。    商品データ一覧のエクセルファイルには、「商品番号」「色」「サイズ」があります。  この3条件が商品マスタのものと一致する商品マスタのコードを転記したいです。 量が膨大なうえ、急ぎの作業なため、何卒よろしくお願いいたします。

  • ユニークキーがない場合の文字列比較について

    エクセルで Sheet1 には商品の受注データ一覧表があります。 Sheet2 には商品マスタがあります。 今、Sheet2のマスタに存在するユニークな商品コードを、Sheet1に転記しています。 (転記するときの条件: Sheet1に入力されている商品コード、カラー、サイズがSheet2のマスタと完全一致した場合) ですが困ったことに、Sheet1に入力されている商品コード、カラー、サイズ表記のいずれかが Sheet2の商品マスタの文字列と若干異なっているものがあります。 正しいのはSheet2の商品マスタなのですが、Sheet1にはユニークキーがないため 各シートのデータを見比べて手作業で直している状態です。 データ量が大量に存在するため、間違いが発生しないか心配です。 やりたいことは、 Sheet1    A     B    C 1  123-  白   サイズM Sheet2    A     B    C 1  123   白   サイズM 上記のように、3つの条件のうち一つが異なっていた場合、Sheet1のA1のセルに色を付ける、 といったことです。 できれば文字列の途中以降が異なる場合まで検索できたら大変助かります。 難しいことは承知していますが、何卒よろしくお願いいたします。

  • エクセルデータ検索方法を教えてください!

    エクセルで下記のような検索をしたいと思っています。 VBAの知識がないので、関数で行いたいです。 Sheet1   G     H    I     J 1 商品番号 カラー  サイズ  コード 123    白    M     Sheet2   A     B    C     D 1 商品番号 カラー  サイズ  コード   123    白    M     aaa 上記のようにシートが分かれています。 Sheet1の「商品番号」「カラー」「サイズ」と、Sheet2の「商品番号」「カラー」「サイズ」 が対応しており、3つの条件すべてに合致するSheet2の「コード」を、Sheet1の「コード」に 表示させたいです。 データが膨大にあるのですが、大変急ぎの作業のため、どうぞよろしくお願いします。

  • エクセルVBAでCSVファイルから取り込みたいのですが・・・

    CSVファイルのデータを取り込むコードを教えていただけないでしょうか。 「共有フォルダ」の中に「作業用.xls」と「090820.csv」があります。csvファイルは日によって名前が変わりますが、必ず一つしか入れないことにしています。 CSVファイルの1行目は見出しです。2行目以降がデータになっています。 A2からI列最終行を「作業用.xls」のsheet1のA6にコピー(取り込み)したいのですが、よろしくお願いします。

  • エクセル フィルタオプションでの抽出

    使用しているデータベースから、必要な項目列と行のみ抽出し、いくつかの別ファイルに引用したいと思っています。 抽出元のマスターデータベースは下記のような形式で、   |A   |B   |C   |D   |E   |…S程度   |出荷先 |日付  |コード |商品名 |単価  | ____________________________ 1 |A社  |4/5 |商品由来|AAA |3000| ・ ・ 5 |B社  |4/5 |同上  |BBB |2800| ・ ・ 28|A社  |4/6 |同上  |CCC |1500| ・ ・ 45|C社  |4/6 |同上  |AAA |2950| 上記簡素化してありますが、出荷先と日づけごとに 複数の商品や単価の行が入る形になります。 抽出先は、 1)特定の縦列のみすべて引用したいものが複数  (A表:ABE列の表・B表:ACDE列の表など)  (今後抽出したい列が変わる可能性あり) 2)特定の列のうち、特定の行を指定して引用したいもの の、2種類があります。 マスターは日々増えてゆきますが、抽出先の列項目は固定のため、 作業用の列を行を追加し、作業行用部分で抽出表の列を指定 作業列用で行を指定、のように出来ないでしょうか(下記)      |A   |B   |C   |D   |E   | 作業行列 |出荷先 |日付  |コード |商品名 |単価  |   行用→|AB  |A   |B   |B   |AB     ↓列用 ____________________________   |1 |A社  |4/5 |商品由来|AAA |3000|   |・   |・ 1 |5 |B社  |4/5 |同上  |BBB |2800| 1 |・ 1 |・   |28|A社  |4/6 |同上  |CCC |1500| 実作業を行うのはエクセル超初心者の方になるので、 範囲指定等をかけなおしたり、動作不備の対応が難しい状態です。 作成後は自身の手を離れてしまうので、 極力マクロやピボットテーブルを使わず、関数で指定をかけ、 ファイルをアクティブにした時自動更新出来るような案はないでしょうか。 ややこしくてすみません。 考えすぎて複雑にしてしまっている気もしますが、どうぞお力をお貸し下さい。 宜しくお願いします。

  • エクセルのマクロのコードを教えてください

    エクセルマクロについて教えてください。 エクセルバージョンは2013です。 現在定例業務の改善を行っております。手作業で実施している作業をマクロで自動化したくコードを教えてください。〈作業〉 1台帳.xlsのA~F列でデータを入力してデータベースを作成しています。 2そのデータを社内他部署送付用の定型フォーマットに転記して所定のフォルダに名前を付けて保存しています。定型フォーマットのC1に台帳.xlsのB列のデータ、D4にC列のデータ、F5にE列のデータを転記して台帳.xlsのA列のデータをファイル名に追加して所定のフォルダにほかんします。(ファイル名例「案件+A列のデータ.xls」) ※定型フォーマットも所定のフォーマットフォルダで管理しています。いつもそれをコピーして使用しています。 3保存したファイルの保管場所のファイルパスを台帳.xlsのG列に転記してハイパーリンクにする こんな作業になります。台帳.xlsのデータは不定期で増えていくので1件ずつ実行できればと思っています。実行済みと未実行の判別はどこかの列の「済」なんかつけて条件判別できればと思っています。 よろしければ教えてください。 (1)所定のフォルダは仮でマイドキュメントの「案件保管フォルダ」 (2)定型フォーマットはマイドキュメント直下においてある (3)定型フォーマットはの「案件詳細」シートに転記 (4)案件は文字列としてプラスA列のセルのデータを使用して「案件保管フォルダ」に保管しています。

  • Excel VBA、ファイルのオープンについて

    どうにも解決が付かず、困ってしまっています、どなたかご回答をお願いいたします。 デスクトップ上にAというフォルダがあり、その中に二つのファイルa.xls、b.xlsがあるとします。 今、a.xlsを開いて、その中に「データ入力表」というシートを作り、そこに入力したデータをマクロを貼り付けたボタン一つでb.xlsへデータ蓄積できるようにしようと考えています。蓄積データが大量になることが予想されるので、別ファイルとしたかったのですが、そうすると、何度もb.xlsにデータを転記する必要があるので、b.xlsはその都度開いたり閉じたりせずに開いたままにしておきたいわけです。 そこで、ボタンに貼り付けるマクロには、 ・最初にデータ転記する時にb.xlsを開く ・以降のデータ転記時にはb.xlsは開いたままにする ように、IF文で分岐を付けたいのですが、最初にファイルを開くのは  Set wb = Workbooks.Open("b.xls") で良いわけですが、「b.xlsを開いたままデータを転記する」場合がどうにもうまくいきません。 ファイルをオブジェクト変数にセットするように、 Set wb = Workbook("b.xls") とすると「インデックスが有効範囲にありません」と怒られ、パスの設定か?と思い、 myDir.Workbook("b.xls") とすれば「オブジェクトが必要です」 と断られてしまいます。 この、転記先となるb.xlsを開いたままデータを転記する場合には、オープンしてあるb.xlsはどうセットしたら良いのでしょうか?、というのが今回の質問です。 まだ初心者のため要点が掴みづらい文章となってしまい、お答えしにくいかとは思いますが、どなたかこの混迷状態をご理解頂けた方、ご返答を宜しくお願いいたします。

  • 集計表の作成(自動転記)

    集計表への自動転記の方法を教えてください。 方法は可能であれば関数を用いた方法でお願い致します。 マクロを使用して作成する場合でも構いません。 ※1枚目の画像 完成後の集計表となります。 データ一覧(CSV)より、データを集計し、結果を転記する。 売上(2)については、指定のセルを転記するのではなく、 別にある対象リストに該当するもののみを集計し、転記する。 ※2枚目の画像 データ一覧(CSV)です。 よろしくお願い致します。

  • エクセルVBA ユーザーフォーム 検索

    現在VBAにてユーザーフォームにて入力したデータをシート1に転記するものを作成しました。 この転記したデータを生かして作業したいと考えております。 データは商品データで A    B C E F 商品コード 商品名  区分  単価  備考 となっており ユーザーフォームも TEXTBOX1=A TEXTBOX2=B と言う様になってます。 現在考えているのがこのデータの一部を変更したい場合、コマンドボタンを押すと商品コード入力用boxがでてきて、商品コードを入力するとA列から検索し該当する商品データをユーザーフォーム上に表示するようにしたいのです。 そのデータがA75行にあったとします。 そのユーザーフォーム上で単価を変更した場合検索した行(A75行)にそのまま上書きする様にしたいです。 説明がうまくできてないかも知れませんが、どなたかご教授願います。

専門家に質問してみよう