<Excel>データベースから特定の要件を満たすデータを抽出し、他のシートへ転記する方法

このQ&Aのポイント
  • Excelデータベースの中から特定の要件を満たすデータを抽出し、別のシートに転記する方法について教えてください。
  • 具体的には、Sheet1にあるデータから顧客別の納品書を作成したいと思っています。
  • 顧客名を入力すると、Sheet1のデータから該当顧客の納品データを抽出し、Sheet2の顧客別納品書に転記する方法を知りたいです。
回答を見る
  • ベストアンサー

<Excel>データベースの中から特定の要件を満たすデータを抽出し、他のシートへ転記

Sheet1に以下のデータがあるとします。  <納品データ>   A      B      C      D 1 顧客   商品コード  品名    数量   2 ○○    0001    りんご   100 3 △△    0002    みかん   500  4 □□    0003    いちご   200 5 △△    0003    いちご   300      6 ○○    0003    いちご   100    上記データを基にSheet2へ顧客別の納品書を作成します。 納品書の雛形は以下のようなものです。 <顧客別納品書>   A     B     C     D 1         △△   様(敬称)   2 商品コード   品名     数量 3  0002     みかん    500    4  0003     いちご    300      顧客名(上記例だと”△△”)をB1に入力すると、Sheet1を検索しに行き、該当顧客の納品データを抽出し、Sheet2の顧客別納品書に転記するというものを作りたいと考えております。 商品コードと数量さえ抽出→転記できれば、「品名」は別途「品名リスト」等を作成しておき、そこから引っ張ってくれば良いと考えています。 作成要件としては、、、  1.すべて関数による作成  2.オートフィルタ等の使用による手作業は不可 Excelをまったくわからない人でも顧客名だけを入力すれば納品書を作成できるようなレベルのものを考えています。また、VBAを使わないのは私自身が理解できないからです。 恐れ入りますがよろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

A3=INDEX(納品データ!B:B,SUMPRODUCT(SMALL(1000^(納品データ!$A$1:$A$999<>$B$1)*ROW($A$1:$A$999),ROW()-2))) としてC3までコピー後に下方にコピーしてください。 データが存在しない場合は「0」が表示されますので表示形式などで表示しない対応してください。

300glp2
質問者

お礼

ご回答ありがとうございました。 エクセルで設定したところ、当方が望んでいた通りの結果となりました。 上記質問に記載したデータは簡素化した仮のものなので、実際のワークシートに置き換えて式を設定しようと、鋭意努力中です。

300glp2
質問者

補足

早速のご回答ありがとうございます。 御礼が遅くなり失礼いたしました。内容を理解できてからと思い、がんばっているのですが、2点ほど判らない点があります。 式の中にある「1000^」と「<>」が何を意味するか、教えていただけると非常に助かります。

関連するQ&A

  • データベースから特定の要件を満たすデータ抽出

    エクセルに入力したデータベースからデータの抽出をしたいと考えています。 データ抽出はフォームにチェックボタン(およそ60種類)で、条件をチェックします。 データベースからチェックに該当しないもののみを抽出して、他のシートへ転記したいのですが、 このようなファイルの作成方法を教えて頂けないでしょうか?

  • VBAマクロ:データシートから情報を抽出して顧客別の出荷表を作成したい

    いつもこちらではお世話になっています。 ありがとうございます。 今回はマクロで以下のようなことをしたいと考えていますが、どんな組み方がいいでしょうか? いつもながら勉強不足で申し訳ありませんが、お力を貸して頂ければと思います。 まず、下記のようなデータシートがあります。 日付    商品名     顧客コード 9/10   みかん      A0001 9/12   ぶどう      A0002 9/13   いちご      A0001 9/13   いちご      A0002 9/18   鶏肉       B0013 このデータシート上で(例えば)ボタンを押すと 一度に各顧客毎の「出荷表(納品書)」が作成される(別ファイルで保存される)、というようなマクロを組みたいのです。 …A0001の出荷表は、9/10,9/13のデータが載っているものになります。 (これがそれぞれA0002、A0013の分も同時に作成されてそれぞれ別ファイルで保存される形で) データシートと別に「出荷表(納品書)」ひな形シートを作って、 1行ずつひな型に流し込んでいこうかな?と考えてみたのですが、 (顧客コードで並べ替えをしてから、コードNOがかわる前の行まで 流し込んで別名でファイル保存してみる、とか…でもこれだと 切り替わったあとのコードの分の処理をどう進めてよいかわからず)どうもうまく考えがまとまりません。 どうかよろしくお願い致します!

  • 【ExcelVBA】顧客別に抽出データをシート転記

    現在、顧客毎の支払い明細をExcelで自動発行できるものを作っています。 独学で、以下の状態までは作成できたのですが、その後、どうすれば良いのか分かりません。 [入力シート] ※以下、項目名はA6:O6に記載。 A=No.       F=科目名       K=該当期間 B=顧客ID    G=業者名       L=本体金額 C=顧客名    H=摘要【抜粋】    M=消費税 D=大項目    I=摘要         N=合計 E=勘定科目   J=説明         O=計上月 上記[入力シート]内の「C=顧客名×O=計上月」を抽出条件としたフィルタオプションで転記 というコードは、下記で成功しました。 ※コード内の「顧客テーブル=入力シートの全データ」。「Q_抽出条件=顧客名×計上月」の条件 ---------------------------------- Sub 必要なフィールドのみを転記() Dim myTable As Range, myQuery As Range, taegetRnage As Range Set myTable = Worksheets("入力Form").Range("顧客テーブル") Set myQuery = Worksheets("入力Form").Range("Q_抽出条件") Set targetRange = Worksheets("必要項目のみ転記").Range("b3:l3") myTable.AdvancedFilter xlFilterCopy, myQuery, targetRange End Sub ---------------------------------- また、顧客名毎にシート作成し、転記ということも以下コードで成功しています。 ※コード内の「myList = Array("顧客A","顧客B","顧客C"・・・・・・・・・・)」は、顧客数分、名前を記載してあります。 ---------------------------------- Sub 物件毎に転記() Dim myTable As Range, mysheet As Worksheet, i As Integer Dim myList() myList = Array("顧客A","顧客B","顧客C"・・・・・・・・・・) Set myTable = Worksheets("入力Form").Range("顧客テーブル") For i = o To UBound(myList) Set mysheet = Worksheets.Add(after:=Sheets(Sheets.Count)) mysheet.Name = myList(i) & "_支払明細" With myTable .AutoFilter 3, myList(i) .Copy mysheet.Range("a2") .AutoFilter End With mysheet.Range("a2").CurrentRegion.EntireColumn.AutoFit Next End Sub ---------------------------------- まず、顧客数分の抽出先(転記先)明細シートを用意し、必要な項目名だけを 記載しておくので、そこに「顧客名」×「計上月」の抽出条件で抽出された内容を 顧客別に指定シートに、転記したいのです。 ※「顧客名」で転記先シートを予め指定できるのであれば、抽出条件は「計上月」だけで構いません。 顧客数が30件程あり、毎月、入力シートに売上データは追記されていきます。 その蓄積されていくデータの中から、一括で「(1)計上月指定 (2)顧客名別の指定シートに該当データのみを転記 (3)顧客名に該当する転記先シートがなければ、新しくシートを作成した上で転記」 という作業を行いたいと考えています。 ※(3)は、Want条件なのでなくても大丈夫です。 あまりVBAの知識がない為、コードの記載方法など詳細に教えていただければ幸いです。 何卒よろしくお願い致します。

  • Excel2003 複数の条件を満たすデータを抽出する関数を教えて下さ

    Excel2003 複数の条件を満たすデータを抽出する関数を教えて下さい! 下のデータで、A列でB、B列で赤を選んだ人は「みかん」という「みかん」を抽出する関数を教えて頂けませんでしょうか? データシートとは別に集計シートを作成しています。 お忙しい中恐れ入りますが、ご教示下さいますようお願い申し上げます。。。 ●データ A B C 1 A 赤 みかん 2 B 赤 りんご 3 C 白 いちご 4 B 青 いちご 5 D 赤 みかん 6 A 青 みかん 7 C 黄 りんご 8 E 赤 バナナ

  • シート1とシート2のデータ一致 抽出方法

    エクセルのデータ抽出でお知恵をお貸し下さい。 シート1 A列  B列     C列 品名  製品番号  数量 AA    1AAAA    200 BB    1BBBB    250 CC    1CCCC    300 シート2 A列   B列     C列 品名  製品番号   数量 AA    1AAAA   200 BB    1BBBB   250 AB    AAAA    500 CC    1CCCC   300 上記のようなシートがあります。 内容は同じなのですが、シート2にはシート1にはない品名、製品番号、数量が含まれます。 シート1の品名、製品番号、数量がすべて一致するものをシート3へ抽出し、 一致しなかったデータ(シート1にはなく、シート2にあるものを含め)をシート4へ抽出したいのですが 何か良い方法はないでしょうか??

  • データシートから他のシートへ抽出

    元データ:(2)データシート 抽出シート:(6)抽出シート (2)データシートには、    B     C    D    E    F    G・・・・・・P 4 (項目) (内容)  (数量) (単位) (単価)  (金額) (仕入先) 5 りんご   果物   1    個  100   100   A商店 6 みかん  果物   2    個  100   200   B商店 7 ジュース 飲料   3    本  100   300   A商店 8 牛乳    飲料   2    本  100   200   A商店                ・                ・                ・ とあります。  これを(6)抽出シートのA3セルに仕入先名を入れることで、 (6)抽出シート   A   B    C     D   E   F   G 3 A商店                               ・                ・ 21   (項目) (内容) (数量)(単位)(単価)(金額) 22   りんご  果物   1   個 100  100 23   ジュース 飲料   3   本 100  300 24    牛乳  飲料   2   本 100  200                ・                ・                ・ 上記の様にB22(項目)、C22(内容)、D22(数量)等を抽出したいのですが、VLOOKUPを使ってもりんごのみを何件も抽出したりで困ってます。 ちなみに(6)抽出シートはある程度の雛形が決まっています。 何かいい方法はありますでしょうか。 どうぞご教授宜しくお願い致します。 図が変になってしまってすいません。

  • エクセルの関数についてです、よろしくお願いします

    エクセルの関数についてです、よろしくお願いします。 sheet1に以下の様なデータが何百行とあります。 A B C D E 日付  顧客名  品名  数量  金額 上記のsheet1のデータを基にsheet2へ抽出して転記する ものを作りたいと考えています。 具体的に言いますと sheet2のA1に2014/11/21、 B1に2014/12/20、 C1に ○○商店と入力するとその下に A      B     C     D 日付   品名   数量 金額 2014/11/23  りんご 5 750 2014/11/28  みかん 2 300 2014/12/2   いちご 3 600 2014/12/10  りんご 5 750 sheet1のリストから該当するものを引っ張ってきて sheet2へ表示させるものです オートフィルタ等でなく、関数で出来ないでしょうか お詳しい先生方よろしくお願いします。

  • データ転記。うまく転記できないシートがあります。

    エクセルのデータ転記について助けてください。 現在 エクセルで職場で使用する現金出納帳を作成中です。完成間近なのにつまずいてしまいました。 作成にもう長い時間かかっるので今週中になんとか仕上げたいのです。 (職場での周りの目がこわくって・・・) どうかどうかよろしくおねがいします。 *各シートの説明 【シート1(元帳)】は記入用シート(1年間の経費等の入力をします) A1は表題 2行目はタイトル行で B列:月日、C列:曜日、:D列:経費部門コード(以下部C)、E列:経費部門名(D列の部C入力時に他シートにあるデータベースからLOOKUPで抽出して表示するようにしてます) F、G列は手入力用の内訳や備考の列、H列:収入金額、I列:支払金額、J列:差引残高。(I・J列は転記必要なしです) データはB3(日付)から入力します。 データ表の範囲はとりあえず100行目まで(A1からJ100) 【シート2~シート16(シート名はD列の経費部門コード番号です)】 こちらが転記先シートです。 A1に部門コード、B2に部門コード名(A1のコードでデータベースより抽出)2行目はB列:月日、C列:曜日、D、E列:内訳、備考、F:支払金額 【シート17(経費部門コードのデータベース)】 部門番号と部門名を表にして 元帳で入力の際 ここからひっぱってくるようになっています。 番号は15種類(経理上不規則な番号):1・2・4・5・6・7・8・9・10・12・20・21・22・仕・給(これをシート名にしてます) *希望する完成仕様 元帳(シート1)に入力したデータが同時に部門C別シート(15種類)に必要な項目だけ転記される。必要な項目は上記のシート説明参照。 *現在の作成状況 ・元帳のシート A3に'=COUNTIF($D$3:D3,D3)&D3 以下 A列はA3をコピー ・15枚の部門番号のシート B3(転記初期行)に'=IF(ISERROR(VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)),"",VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)) C3,D3,E3,F3列はB3をコピーしLOOKUPの列番号を変更 *現在の状況と問題点 シート4・5・6・7・8・9・10・12・20・21・22はきちんと転記する。 シート1(部門C:1)は部門C:1と部門C:21のデータが転記されてしまう シート2 (部門C:2)は部門C:2と部門C:12と部門C:22のデータが転記されてしまう。 この2つのシートは 下1桁でひっぱってきてしまってるのは分かるのですが改善方法が分かりません。 どうかこの2シートがきちんと動く数式を教えていただけるでしょうか? 文章力不足のため 質問の理解にさぞ悩まれるでしょうがどうぞよろしくお願いします。 補足:01 02 04と 二桁でもしてみましたが反応は同じ。 よく分からなくて セルの表示変えても値は1・2・4になってしまうんです・・。 結局よく分かりませんでした。

  • データベースとデータの抽出について

    データベースとデータの抽出について エクセル2003で以下のような、表を作っています。 データは現在、A列に10000万件程度入っています。 4列目の購入日付データの年、月、日がそれぞれのセル(D2、E2、F2) に分割入力されています。 このデータベースから、氏名と購入日付を基準キー にして、顧客NOと購入日付(1つのセルに結合)、 購入商品を抽出し、シート2に転記していきたいです。 抽出方法は、シート2に以下のような形で検索  表示したいです。 (シート2) 氏名(B1に表示)→C1に入力 抽出開始年月日(D1に表示)→年はE1、月はG1、日はI1に入力  抽出終了年月日(D2に表示)→年はE2、月はG2、日はI2に入力 検索後、表示される顧客NOと購入日付、購入商品は 同じシート2の以下のセルに表示したいです。 顧客NO(L1に表示)→L2から下に表示 購入日付(M1に表示)→M2から下に表示 購入商品(N1に表示)→N2から下に表示 したいです。 日付が分割入力されているため、抽出がうまくできません。 氏名、または名字だけでうまく検索できるコードはあるでしょうか。 どうぞよろしくお願いします。

  • エクセルでデータを抽出し,別シートに転記する方法

    「志望校一覧」というシートに添付ファイルのような書式で約200人のデータが入っています。 これを高校学科別にデータを抽出して書式を変えずに「志望校別」という別のシートに転記したいのですが,何か良いマクロか数式はありますか?実際のデータが入っている行は3行目(A子)から188行までです。並び順は右端のコード順,なおかつ組・番順になると良いのですが…。

専門家に質問してみよう