- ベストアンサー
EXCEL: データベースからの抽出
kazuhiko5681の回答
- kazuhiko5681
- ベストアンサー率49% (79/159)
初めまして。VBAでサンプルマクロを作ってみました。下のコードをコピー&ペーストするだけで、貴方様の思い通りの動作をします。次のように操作してみて下さい。 ・データの入力されているブックを開き、ALT+F11キーを押してVBE画面を表示させ、画面左上のVBAProjectと書かれている下のSheet1をダブルクリックして表示された画面の右側の白い部分に下記のコードをコピー&ペーストする。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim myRow As Integer myRow = Target.Row If Target.Address = Cells(myRow, 1).Address Then Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Cells(myRow, 1).Value ElseIf Target.Address = Cells(myRow, 3).Address Then Worksheets(2).Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Value = Cells(myRow, 3).Value Worksheets(2).Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Value = Cells(myRow, 2).Value End If End Sub ・画面左上のVBAProjectと書かれている下のSheet2をダブルクリックして表示された画面の右側の白い部分に下記のコードをコピー&ペーストする。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myRow As Integer Dim myRange As Range Dim myCell As String Dim myKodo As String Application.EnableEvents = False myRow = Target.Row If Target.Address <> Cells(myRow, 2).Address Then Exit Sub myCell = Worksheets(1).Cells(Rows.Count, 2).End(xlUp).Address myKodo = Cells(myRow, 2).Value Set myRange = Worksheets(1).Range("B1:" & myCell).Find(myKodo, LookAt:=xlWhole) If myRange Is Nothing Then MsgBox "入力されたコードは、ありません。" Else Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = myRange.Offset(0, -1).Value Worksheets(2).Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Value = myRange.Offset(0, 1).Value End If Application.EnableEvents = True End Sub データベースとなる表をシート1選択したものを表示する表をシート2としてマクロを組んであります。 操作方法1 1.シート1の区分欄から適当な項目のセルを選択する。 2.シート1の品名欄から適当な項目のセルを選択する。 シート2に選択された区分・品名・それに対応するp/nが自動的に表示されます。 操作方法2 1.シート2のp/n欄に適当な番号を入力する。 シート2に入力されたp/nに対応する区分・品名が指定の場所に自動的に表示されます。 ご不明な点・不具合等がございましたら、ご遠慮なくお知らせ下さい。貴方様の思い通りの動作ができるようになるまで、ご一緒に考えていきたいと思います。
関連するQ&A
- EXCEL2003 複数シートから抽出したいです
1つのブックに1ヶ月の日数分のシートがあります。(約30シート) それぞれのシートのデータは、 1水(sheet名) A B… P Q R S 1 りんご 4つ 300円 2 みかん 3つ 500円 3 りんご 5つ 400円 4 バナナ 1つ 100円 … … … … 2木(sheet名) A B… P Q R S 1 ぶどう 4つ 300円 2 みかん 3つ 500円 3 りんご 2つ 200円 4 バナナ 1つ 100円 … … … … の様なデータが入力されています。 それぞれ複数のシートのデータの中から、りんごだけを集め集計用のシートに以下の様に表示したいです。 集計用sheet A B C D 1 1水 りんご 4つ 300円 2 1水 りんご 5つ 400円 3 2木 りんご 2つ 200円 4 … … … … 関数でもVBAでもいいので、複数のシートから抽出することは可能でしょうか? どなたかわかるかた教えて下さい。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- <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を使わないのは私自身が理解できないからです。 恐れ入りますがよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 【EXCEL2000】2つのリストの合計を出すには?
リストA リンゴ 3 みかん 5 バナナ 2 スイカ 3 リストB りんご 2 メロン 4 バナナ 3 いちご 2 ↑のような2つのリストがあるとして、 リストC りんご 5 みかん 5 バナナ 5 スイカ 3 メロン 4 いちご 2 リストA・Bの合計がリストCのようにするにはどのような関数を使えばいいかお解りになる方教えてください。 判りづらい質問で申し訳ありません。m(_ _)m ※品名と数量は別セルです。
- 締切済み
- オフィス系ソフト
- 分けて作成したシートを自動的に1枚のシートにまとめたい
A B C D 品名 数量 納期 価格 1 りんご 50 11/1 3,000 2 みかん 100 11/5 5,000 3 メロン 10 11/1 10,000 エクセルで上記の様なリストを発注リストとしてA店発注リスト・B店発注リスト…と店舗別でシートを分けて作成したリストを自動的に一枚のシートに(A店+B店+…の全ての発注内容)まとめることは出来ますか。 エクセルについてはあまり詳しくないのですが、何か方法があれば教えて下さい。 宜しくお願いします。
- 締切済み
- Windows XP
- Excel関数について
A B 1 担当者 品名 2 東 みかん 3 南 りんご 4 西 バナナ 上記のシートの(担当者)東が(品名)みかんを販売した数を別シートで集計する場合どういった計算式になりますか? ご返答宜しくお願いします!!
- ベストアンサー
- 財務・会計・経理
- 【ExcelマクロVBA】抽出したデータをリストボックスで表示させるマクロ
Excelであるセルに入力したデータを別シートから抽出して、別セルにリストボックスで表示させる方法が分らなくて悩んでいます。 例えば、下のような価格表があって <A列> <B列> <C列> 1 りんご A店 100円 2 りんご B店 90円 3 すいか A店 950円 4 すいか C店 800円 5 みかん D店 100円 ・ ・ ・ ・ ・ ・ 入力シートが別シートにあり、 <A列> <B列> <C列> 1 2 3 セルA1へ例えば「すいか」を入力(リストボックスから選択できるようにしてあります)した場合、B1は「A店」か「C店」のみが、C1は「950円」か「800円」のみを選択できるようなマクロを作りたいと思っています。この価格表は流動的で毎日更新されています。A列の品名は絶えず更新し、C列の価格も変動しているのでLookupなどの関数では無理ではと思っていますがマクロだと可能でしょうか? なお、この入力シートを別シートへ転記させて活用するつもりで 入力ミスや空欄をチェックさせて転記を中断(MsgBox等)させたいのですが、セル指定で判断させるのではなく(A列を全て埋める必要はありません)、例えばA1に品名が入力した場合、1行目の該当セル(記入必須項目)の空欄が無いこと・入力が正しいかをチェックする様な条件分岐のマクロ記述方法を教えてください。 説明が拙いかと存じますが、宜しくお願いします。
- 締切済み
- オフィス系ソフト
- 2つの条件で重複しないデータを抽出
シート1 1|品名 種類 名前 データ 2|A 1 あ 21 3|B 2 い 11 4|F 2 あ 51 5|A 1 い 21 6|B 2 あ 64 7|A 1 あ 84 シート2 1|品名 A 2|種類 1 3| 4|名前 5|あ 6|い シート1のデータから、シート2の2つの条件(A1:B2)で、重複しない名前を表示する方法を教えて下さい。 上記のデータでいうと、品名Aであり種類が1の名前を重複なしで特定の位置(A5)から詰めて縦に表示するようにして、 シート1のデータ、シート2の条件を変更したらA5からの名前が自動更新されるようにしたいです。 以下できたら追加したいこと 1.表示する名前の順番が、シート2の条件で集計したデータ値が多い名前順 2.シート2のB2の種類に0を入れると種類の条件無しで表示 実際はA5からの名前の行は数行を結合したもので右側には複数の行でデータ項目別になって、名前が入力された時に日毎のデータを自動表示しています。 全部で名前の種類は30以上ありますが、品名の条件をつければ名前は10種類以下になります。 グラフは名前別で表示しており、不要な名前が増えると表示しずらいので、必要な名前だけのデータを表示するようにしたいです。 どうかよろしくお願いします。
- ベストアンサー
- その他MS Office製品
- エクセルの数式を教えてください(Excel2003
図のようなシートでD2からD6に品名のリストを用意しておきます。 このとき、A2に「1」と入力すれば(もしくは数字のリストを別途用意してそこからプルダウンで選択)「りんご(D2)」、「2」と入力すれば「バナナ(D3)」とB10に表示させたいのですが、B10にどういった数式を設定すればよいでしょうか? ※「3」:みかん、「4」:ぶどう、「5」:もも、という具合です。 ※このD列の行数は何行になるかは未定です。 ご教示よろしくお願いします。
- 締切済み
- Excel(エクセル)
- Excel 2007で困っています
Excel 2007で困っています A B C 1【品名】 【区分】 【金額】 2 りんご 運賃 1,200 3 りんご 運賃 1,000 4 りんご 容器 300 5 りんご 容器 200 6 りんご 雑費 900 7 みかん 運賃 1,500 8 みかん 運賃 1,250 9 みかん 容器 200 10 みかん 雑費 800 ・ ・ ・ ・ ・ ・ ・ ・ このようなデータを下記のように ↓ A B C 1【品名】 【区分】 【金額】 2 りんご 運賃 1,200 3 りんご 運賃 1,000 運賃合計 2,200 4 りんご 容器 300 5 りんご 容器 200 容器合計 500 6 りんご 雑費 900 雑費合計 1,400 7 みかん 運賃 1,500 8 みかん 運賃 1,250 運賃合計 2,750 9 みかん 容器 200 容器合計 200 10 みかん 雑費 800 雑費合計 1,000 ・ ・ ・ ・ ・ ・ ・ ・ 区分をキーにして集計指示画面より集計指示をして さらに、手動で【品名】毎に1行を追加して【品名】毎の合計金額をオートSUMボタンだけで自動で 行っていたのですが、Excel 2007 にしてから自動で品名毎の合計を引っ張ってきてくれません そもそも、小計指示後に左上の1,2,3の□ボタンで2□を押して【区分】毎の集計のみ表示させると 金額が0表示になってしまいます。3□を押して全データ表示させると区分集計に集計金額が表示されます Excel2007は、表示から変更が多くて戸惑っています 以前のように、表示させ、オートSUMだけで品名集計金額を出す事はできないでしょうか? 説明が下手ですみませんが、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCEL2000で関数INDEXとMATCHを使った際の表示について
EXCEL2000で関数INDEXとMATCHを使った際の表示について お聞きしたいのですが、別シートでリストが有りそのリスト内のリストNoを別シートで入力すると項目が自動表示される様に関数を入力したのですが、リストでは1行に2段表示にして作成しているのですが別シートに自動表示した際1行で表示されます。リストと同じ表示するにはどうすればよいのでしょうか、わかる方宜しくお願いします。 ちなみにわかりずらいかもしれませんが現在下記の様に表示されます。 現在の関数式 =INDEX(**リスト!$B$4:$B$50,MATCH(**データ!D2,**リスト!$A$4:$A$50,0)) 表示例 (リスト側) (データ側) A(列) A(列) 1(行) あああ 1(行) あああいいいいい いいいいいい
- ベストアンサー
- オフィス系ソフト
お礼
連絡おくれてすみません。 なんだか、すごいモノを作っていただいてありがとうございます。 ご指示通りやってみたらできました。ただ、時々うまくシート2に反映されない現象があります。いったんエクセルを終了し再び開くと実行されますが、これは私のPC上の問題ということなのでしょうか?