Excelデータベースから別シートに抽出する方法とは?

このQ&Aのポイント
  • Sheet1に商品の受注状況をリストにしています。これをデータベースとして、商品の出荷指示書を作りたいです。
  • 出荷指示書を作るためには、オーダーNoを入力すると顧客名が表示され、商品コードを入れると注文数が表示されるようにしたいです。
  • 注文していない商品の場合は、注文数欄に「0」または「×」が表示されればいいです。
回答を見る
  • ベストアンサー

EXCEL データベースより別シートに抽出

Sheet1に商品の受注状況をリストにしています。 A列-オーダーNo、B列-顧客No、C列-顧客名、G列-商品Aの注文数、H列-商品Bの注文数、、、、J列-商品Dの注文数、というように。これをデータベースとして、次のような事をするにはどのようにすればよいでしょうか? 商品の入荷はバラバラです。入荷した時点で、その商品の出荷指示書を顧客毎に作り倉庫に渡します。 そこで、、、 Sheet2に出荷指示書を作ります。 A1にオーダーNoを入力するとB1に顧客名が表示されます(これは出来ます)。 たとえば今回は商品Bが入荷したとして、A7に商品Aのコードを入れると、この顧客の商品Aに対する注文数がB8に表示されるようにしたいのですが、それが出来ません。。欲を言えば、もしその顧客が商品Aを注文していなければ、B8に「0」または「×」が表示されると尚良いのですが。 よろしくお願い致します。

  • iiwa
  • お礼率17% (29/162)

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

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.1

こんにちは~ 質問に不明な点があります。 > A7に商品Aのコードを入れると、 > この顧客の商品Aに対する注文数がB8に表示されるようにしたい 「商品Aのコード」というのは、Sheet1のどれと対応しているのですか? G列からJ列の 「商品**の注文数」というのが、商品コードになっていればカンタンにできると思います。 【 前提条件 】 ・Sheet1の A列に同じオーダーNo.は存在しない。 ・Sheet1の 1行目は見出しで、G1からJ1には商品コードが(商品コードだけが)入力されている。 ・Sheet2の A1にオーダーNo.を入力。 ・Sheet2の A7に商品コードを入力。 Sheet2の B8に =IF($A$1="","",INDEX(Sheet1!G:J,MATCH($A$1,Sheet1!A:A,0),MATCH(A7,Sheet1!$G$1:$J$1,0))) > もしその顧客が商品Aを注文していなければ、 > B8に「0」または「×」が表示されると尚良い 注文していなければ、Sheet1の注文数の列には何も入力されていないのなら、上の数式で 「0」 と表示されます。

iiwa
質問者

補足

ありがとうございました。 お蔭様でうまく出来ました。 が、ひとつ補足がございます。 出荷指示を出した後、データベースの該当箇所(注文数)のセルに色づけ又はフォントの色を変えると言う事は出来ますか? いまは、出荷指示書は使い廻しの予定で、プリントアウトしたら次の入力という感じです。 出荷後、データベースを上記のようにしようとすれば、指示書を1件ごと保存する必要があるかと思いますが。。。 よろしくお願い致します。

その他の回答 (1)

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.2

No.1です。 > 出荷指示を出した後、 > データベースの該当箇所(注文数)のセルに色づけ > 又はフォントの色を変えると言う事は出来ますか? 一般機能ではムリです。 VBAなら可能ですが、それでもよろしいですか? やり方はいろいろあると思いますが、たとえばこんな感じです。 <前提条件> ・「受注状況リスト」のシート名は Sheet1 ・「出荷指示書」のシート名は Sheet2 ・Sheet1は1行目が見出し、実際のデータは2行目から始まっていること メニューの「ツール」-「マクロ」-「Visual Basic Editor」 または、ALT+F11キーで VBEを起動 メニュー「挿入」-「標準モジュール」 画面の右に表示されたコードウィンドウに↓をコピーして貼り付けてください。 '-------------------------------------------------------- Sub 出荷指示書印刷()   Dim ret As Boolean   Dim myRowValue As String, myColValue As String   Dim myRowRange As Range, myColRange As Range   With Worksheets("Sheet2")     .Activate     If Not IsNumeric(.Range("B8")) Then       MsgBox "データが入力されているか確認してください。"       Exit Sub     Else       myRowValue = .Range("A1").Value       myColValue = .Range("A7").Value     End If   End With   With Worksheets("Sheet1")     Set myColRange = .Range("G1:J1").Find(myColValue)     Set myRowRange = .Range("A:A").Find(myRowValue)   End With   If myColRange Is Nothing Or myRowRange Is Nothing Then     MsgBox "データが見つかりません。入力データを確認してください。"   Else     ret = Application.Dialogs(xlDialogPrint).Show     If ret = False Then       MsgBox "印刷を中止します。"     Else       myColRange.Offset(myRowRange.Row - 1).Interior.ColorIndex = 24     End If   End If   Set myColRange = Nothing   Set myRowRange = Nothing End Sub '-------------------------------------------------------- 右上の閉じるボタン(×)をクリックして、VBEを終了。 メニュー「ツール」-「マクロ」-「マクロ」 「出荷指示書印刷」を実行 または、 メニュー「表示」-「ツールバー」-「Visual Basic」 表示された "Visual Basic" ツールバーから「マクロの実行」ボタンをクリックして、「出荷指示書印刷」を実行 同じ画面で「編集」をクリックすれば、VBEが起動してコードの修正ができます。 塗りつぶす色を変更したい場合は、 myColRange.Offset(myRowRange.Row - 1).Interior.ColorIndex = 24 最後の24が色番号ですので、参考URLを見て、お好みの色番号に変更してください。 色見本の右にあるいちばん上の数字が色番号です。 シート上にコマンドボタンを配置し、それをクリックして上記のマクロを実行することもできますが、ここでは説明しきれませんので必要なら市販の参考書等をご覧ください。

参考URL:
http://www.relief.jp/itnote/archives/000482.php
iiwa
質問者

補足

丁寧なご回答ありがとうございました。 が、やってみたのですが出来ません。。 元の表をカスタマイズしてしまったので、前提条件に戻してはみたのですが。 もう一度やってみますが、VBAの分かりやすく詳しい解説書でお勧めのものがあれば教えて下さい。

関連するQ&A

  • エクセル1行おきのデータを取り出す

    A1とA2はセルが結合されていて、顧客名が記載されています。 B1は入荷数、B2には出荷数が入力されています。 入荷数=出荷数ではありません。 顧客名 100       80 顧客名 500      400 顧客名 200      100 このB2に記載されている出荷数のみ取り出したい (Cの列に貼り付けなど)のですが、関数で可能でしょうか。 その関数教えてください。 よろしくお願いいたします。

  • EXCEL 関数

    EXCELで倉庫への出荷指示書を作っています。 雛形に入力し「別シートへ」というボタンを押せば、転記・保存できるようになっています。 A8に「オーダーNO」、A5に「店名」、C5に「日付」を表示しています。 別シートに保存するタイミングで、「オーダーノート」という名のシートに指示書の一部内容を転記したいのですが、方法はあるでしょうか? オーダーノートのA列に「日付」、c列に「店名」を表示したいのです。なお、B列には予め「オーダーNO」が連番で入っています。

  • エクセル 離れたデータを抽出して集計

    関数で抽出・集計をしたいのですが、式の意味や組み方なども教えていただきたいです。 また、ピボットテーブルでもできないか考えています。 添付画像が見にくいのですが A列からU列まで オーダーNO  商品  オーダー数  単価  合計  在庫  出荷1  出荷数  書類  出荷2  出荷数  書類 と出荷5~書類まで続きます。 求めたい集計表は、出荷日を軸にして、 出荷日を入力すると、自動的に オーダーNO それぞれのオーダーNOに対して、商品・出荷数・単価・合計 を一覧表で作成したいです。 先日、同じような質問をしたのですが、列数が変わるととたんにできなくなってしまい、関数の意味から理解して応用ができるようにしたいです。 よろしくお願いします。

  • sheet1から抽出しsheet2へコピーをVBAで

    VBA初心者です。色々本など見たのですがどうして良いか判らず質問させて頂きます。 sheet2のA1にデータを入力したら、sheet1のA列に同じデータがあるかどうか探してある場合は、その行をsheet2の6行目からコピーをさせたいのですが、 (1)sheet1のデータは下に追加していきます。 (2)sheet2のデータ貼り付けは詰めて貼り付けていきたい。 sheet1  A   B    C 1 -  -   -   2 -  -   - 3 -  -   -    4 社名 商品名 入荷数 5 A社    ○    10 6 B社    △    5 7 C社    ■    20 8 A社    ×    30 9 D社    ○    10  ・ ・   ・    ・ ・ ・   ・    ・ ・ ・   ・    ・ sheet2  A   B    C    1 A社  -   -  2 -   -   -  3 -   -   -  4 -   -   -  5 社名 商品名 入荷数 6 A社    ○    10 7 A社    ×    30 ・ ・   ・    ・ ・ ・   ・    ・ ・ ・   ・    ・ -はブランクセル 色々試したのですが、sheet2にコピーはされてもブランクの行が詰まらないなど上手くいかないため教えて頂きたく質問させて頂きました。 宜しくお願いいたします。

  • Excel2003 重複しないデータを別のシート

    お世話になります。Excel初心者です。皆様のお知恵をお貸しいただければ幸いです。 Excel2003で下記の件で、非常に困っております。 sheet1に重複しないデータがあります。 A B C ←セル横 1 顧客No 商品No パーツNo 2 12345 23-1111 23 3 13456 21-1234 55 4 23456 22-5555 66 sheet2に上記のどの情報を入れても、3つのデータを表示させたいです。 A ←セル横 1 顧客No 2 商品No →ここに入力(21-1234) 3 パーツNo 上記の縦の列は空白です。sheet1の2の商品No21-1234と入力すると sheet1の顧客No13456とパーツNo55が抽出されます。 同様にsheet2のパーツNo空白欄にsheet1のパーツNoの55と入力 すると、sheet2の顧客Noと商品Noが表示されます。 こういう事は、Excel2003で可能なのでしょうか。 お手数お掛けしますが、ご教授よろしくお願いいたします。

  • 3つのシートから適合する項目を抽出したい

    エクセル関数にて何かいい方法があればお教えください。 シート名"商品名A"、シート名"商品名B"シート名"商品名C"と3つのシートがあります。 それぞれのシートにはA列からW列まで統一した項目が入っているのですが、 商品Aを購入した顧客が商品Bや商品Cを購入した場合で、今まではそれぞれの商品の顧客番号を基準にVlookupでAとBとCを照らし合わせ、 A/B/C、A/B、A/C、B/C、Aのみ、Bのみ、Cのみの購入と分けて更に、担当IDをCOUNTIFを使って集計していました。 現状だと何回も同じ作業を繰り返していてとても面倒なんです。 もっと効率の良い関数式はありますでしょうか? 最終的には別のシートの列にそれぞれの商品購入項目(A/B/C、A/B・・・)を、行に営業IDを入れて集計をしたいと思っております。 またはマクロを組んだ方が良いのでしょうか?マクロはまだ初心者で余り自信が無いのですが。。。 どなたかお知恵を拝借頂けないでしょうか。よろしくお願いいたします。

  • エクセルにてこのような抽出はできますか?

    エクセルにてこのような条件抽出(?)はできますでしょうか? 例えば下記のような売上データーがあります。 A列 売上月(4月~3月) B列 顧客名 C列 商品名 月別の売り上げデーターが毎日記入されます(1年間)。 1万行以下には全顧客名のリストが記入されています(例えば500社)。 この全顧客500社の内、売上の上がっていない顧客はどこなのかを抽出することはできますでしょうか? 売上データーを毎日記入することで、売上げのある顧客は分かりますが、売上げの上がっていない顧客はどこなのかを調べたいのです。 全顧客500社-4月売上顧客=4月売上げの上がっていない顧客一覧 こんなイメージです。 月単位で未売上の顧客を調べたいのです このようなことは可能でしょうか? どなたかご知恵を拝借できましたら幸いです。 ※1年を通して月別の売上げを記入します。   A     B    C 1   月  顧客名  商品名   2  4月  顧客A  商品A 3  4月  顧客B  商品B 4  4月  顧客C  商品C 5  4月  顧客D  商品D   ・    ・    ・   ・    ・    ・   ・    ・    ・   ・    ・    ・ ------------------------- ※1万行以下に全顧客データーを記入します(必ずしもここでなくても別シートでも問題ありません) 10000 顧客A 10001 顧客B 10002 顧客C 10003 顧客D 10004  ・ 10005  ・ 10006  ・ 10007  ・ 10008   よろしくお願い致します。

  • エクセルのマクロで行いたいのですが。シート1からシート3(ジャンル別の

    エクセルのマクロで行いたいのですが。シート1からシート3(ジャンル別の商品データ)にあるデータを入荷した商品名で検索し、その検索結果の行を入荷した数量分コピーして、シート4(印刷)に上から順に貼り付けます。その結果をバーコードラベルで印刷し、商品に貼り付けていきたのですがどなたか教えてください。現在は、いちいちシート毎で「Ctrl+F」で検索画面を出し、商品名を検索し、なければ別のシートで検索し、該当するものが見つかれば選択して、行をコピーして印刷シートに貼り付けています。とても時間がかかっています。 シート1から3の構成は、ジャンル別で分かれていますが、 A列:商品名、B列:メーカーコード、C列:自社コード、D列:売価、E列:原価、F列:登録日 です。バーコード印刷のマクロは出来てます。 複数のシートから検索し、コピーして、印刷シートに貼り付けるマクロです。 エクセルは2003で、OSはXPのSP3です。

  • エクセル 別シートから一覧を抽出したい

    部品一覧表を作成しているのですが、2シートあり 1入力シート・2部品コードシートとあります。 部品コードシートにはB列に部品番号・C列部品名・D列部品番号・E列部品名と2行ずつ使い番号・品名がB~Wまで47行分入力されています。 B1:C47、D1:E47…と2列47行にはそれぞれ【A】、【B】、…とセルの名前の定義をつけました。現在【H】までありますが、今後増える可能性があります。 入力シートに、セルの名前を指定したときに部品コードのシートから 一覧を抽出したいのですが、どの関数を使えばよいのかわかりません。 入力シート                 |部品コードシート G   H                  | A Bコード C部品名  Dコード E部品名 4式入力用にあけています。     |1 1800  ユニットA   1501 電源A 5コード 部品名             |2 1801  ユニットB   1502 電源B 6                       |3 G4に関数を入れてG6~G52まで部品コードのシートA1~A47を一気に表示 させたいのです。部品コードシートの行数が変わることはありません。 マクロを使わないと、関数では難しいでしょうか?

  • Excel2003重複しないデータを別のシートに

    お世話になります。Excel初心者です。皆様のお知恵をお貸しいただければ幸いです。 Excel2003で下記の件で、非常に困っております。 ※皆様、申し訳ございません。ベストアンサーを選択すると質問が締め切られることを   知らなかった為、再度質問させて頂きたくよろしくお願いいたします。 sheet1に重複しないデータがあります。 A B C ←セル横 1 顧客No 商品No パーツNo 2 12345 23-1111 23 3 13456 21-1234 55 4 23456 22-5555 66 sheet2に上記のどの情報を入れても、3つのデータを表示させたいです。 Dセル 3行目 顧客No 4行目 商品No →ここに入力(21-1234) 5行目 パーツNo 上記の縦の列は空白です。sheet1の2の商品No21-1234と入力すると sheet1の顧客No13456とパーツNo55が表示されます。 同様にsheet2のパーツNo空白欄にsheet1のパーツNoの55と入力 すると、sheet2の顧客Noと商品Noが表示されます。 こういう事は、Excel2003で可能なのでしょうか。 VBAで実施しようかと思っておりますが、ど素人ですので、お手数ですが なるべくコードのコメントを入れて頂けると幸いです。 お手数お掛けしますが、ご教授よろしくお願いいたします。

専門家に質問してみよう