• ベストアンサー

エクセルでこの抽出(?)はできますか?

nishi6の回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

補足のとおりにしてみました。 シート3を作業用シートにして最終的にシート1にデータを移しています。 シートの構造が分かりませんので、シート1とシート2の対象3列の位置をモジュールに登録してください。最初の4行です。 それとシート名1,2,3は実際のシート名にしてください。Set の3行です。 マクロは、メニューから、ツール→マクロ→Visual Basic Editor でVBE画面に移り、 そのメニューから挿入→標準モジュールで標準モジュールを挿入し下記マクロを貼り付けます。 タイミング?はシート1に抽出したい時ですが・・・(質問の意味が分かっていない?) 頑張ってください。 なお、今から帰宅しますが自宅PCの調子が悪いし、旅行に出かけますのでしばらく連絡できません。ご了承ください。 Public Sub FilterCopy()   Const s2Col1 = "F" '日報 対象3列の最初の列   Const s2Col3 = "H" '日報 対象3列の最後の列   Const s1Col1 = "B" '在庫管理表 対象3列の最初の列   Const s1Col3 = "D" '在庫管理表 対象3列の最後の列   Dim ws1 As Worksheet 'シート1   Dim ws2 As Worksheet 'シート2   Dim ws3 As Worksheet 'シート3   Dim rowMax As Long 'シート2の使用行数     Set ws1 = Worksheets("Sheet1") '在庫管理表 B:Dが対象3列としてあります     Set ws2 = Worksheets("Sheet2") '日報 F:Hが対象3列としてあります     Set ws3 = Worksheets("Sheet3") 'ワーク   'シート2のデータ範囲をつかむ。シート3をクリアする   ws2.Activate: Range(s2Col1 & "1").Select     rowMax = Range(s2Col1 & "65536").End(xlUp).Row     ws3.Cells.Clear   'フィルタをかけて、結果をシート3にコピーする   ws2.Activate: Range(s2Col1 & "1").Select   ws2.Range(s2Col1 & ":" & s2Col3).AdvancedFilter xlFilterInPlace, , , True   ws2.Range(s2Col1 & "1:" & s2Col3 & rowMax).SpecialCells(xlCellTypeVisible).Copy   ws3.Activate: Range("A1").Select: ActiveSheet.Paste   'シート3をソートする   Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _     , Order2:=xlAscending, Key3:=Range("C2"), Order3:=xlAscending, Header:=xlGuess   'フィルタを解除する   ws2.ShowAllData   'シート1の対象3列をクリアする   ws1.Range(s1Col1 & "2" & ":" & s1Col3 & Range(s1Col3 & "2").End(xlDown).Row).ClearContents   'シート3のデータのみコピーする   ws3.Activate   ActiveCell.CurrentRegion.Select   Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1, 3).Select   Selection.Copy 'シート3のデータ部分だけコピー   'シート1に貼り付ける   ws1.Activate   Range(s1Col1 & "2").Select: ActiveSheet.Paste End Sub

fruit-gogo
質問者

お礼

ありがとうございます!! うまくできました。とてもうれしいです。 とても丁寧に書いていただき、本当にありがとうございます。勉強になりました。 私の作りたい表はもしかしたら、根本から改善すべき点があるのかもしれませんが、とりあえず、今、少しでも仕事が効率よくなる表ができました。 とても困っていたので助かりました。

fruit-gogo
質問者

補足

あと、具体的な方法の質問ではないのですが、もし、このような日々いろんなものが入庫し、(しかし、いつも違うものとも限定できないところが微妙)すぐに在庫がなくなるものもあればず~っとあるものもある。取引先、品物も限定されていないので品物にIDも付けられず・・・という在庫管理を、”詳しく知らない人”でも日報を入力したり、簡単に見たい品物のデータを閲覧したりということはアクセスの方が向いているのかということが知りたいのですが。(もちろん、がんばって設計すれば・・という前提ですが) 使い方がわがままなので、使う人が勉強してできるようになるというのが一番いいとはわかっているのですが、教えていただけたらと思います。

関連するQ&A

  • エクセルで項目を抽出したい

    皆様のお知恵をお貸しください。 日々作業者が行っている日報の項目を一覧表より抽出したいのです。 シート1には受付日(A列) 品番(B列) 数量(C列) 納期(D列)・・・ などが記入されています。日々増えていき月あたり100件程度です シート2には作業者の日報に書かれている品番(A列)、作業時間(B列)、作業者名(C列)作業日時(D列)を手入力していきます。 月当たり1000ほどの入力になります。 複数の作業者が同じ仕事をすること、日をまたぐこともあり重複しています。 求めたいことはシート3のA列にシート2で書かれた品名をシート1の品名の中から抽出し自動で書き出したいのです。 今はピボットを使いシート2のデータを表にして、そこの項目をLOOKUP関数を用いて導きだしていますが、その都度ピボットを更新させないといけないので煩わしいと思い、できれば関数で抽出をしたいのです。欲を言えば品番の若い順に自動で抽出できればいいのですが、まずはシート2に書かれた順でもかまいません。 記入例 シート1には A列    B列    C列    D列 10/1   10001    30    10/12 10/2   10002    1     10/5 10/2 10003 3 11/5 ・       ・        ・ シート2には  A列    B列     C列    D列 10001    2.5     ○○   10/2  9058    4      ○○   10/2 10003 1 ○○   10/3 10001 1 ××   10/3  10003 6 ××   10/3 10002 2 △△   10/5 シート3には(希望としては)  A列     9058 10001 10002 10003 . . . よろしくお願いします。     

  • エクセル 条件抽出の関数について

    エクセルで予約状況の一覧を作っているのですが、 シートA(担当者A) シートB(担当者B) シートC(担当者C) とそれぞれ入力シートを分けています。 その各シート内に例えば、   A(日付) B(時間) C(内容) 1 7/18    16:00    2 7/19    15:00  3 7/18    11:00 4 7/20    12:30 という様な予約日と予約時間と内容を入力しています。 ※予約発生毎に入力していくので日付はランダムになります。 その各シートから一覧表として    10:00 10:30 11:00 11:30 ~~~~~~~~~ 7/1   1   2    1 7/2   2   3 ~ ~ というような、7/1の10:00に何件の予約があるかという事を一覧表シートへ抽出したいと思うのですが、上手く関数が作れません。。 過去質問もイマイチ、条件の組み合わせがわからず、どなたかお知恵を お貸しください!! 意味が分からない場合は、申し訳ありません。

  • ◆◆急募◆◆ エクセル 重複するデータの抽出について

    データの入力された2枚のA、Bシートが同じブックにあります。 <Aシート> D2~D500まで顧客番号が入力されています。 <Bシート> C2~C600まで顧客番号が入力されています。 AシートとBシートの顧客番号はいくつか重複しています。 その重複している番号をBシートのどこかのセルに”重複”と表示したいのですが、その方法が分かりません。最終的にオートフィルタで重複と重複していないものを分けたいのです。 大至急教えてください!宜しくお願いします。

  • データの抽出

    再びエクセルの質問をします。 エクセルでデータベースを作っています。 データベースの合計金額を別シート(日報シート)に反映させたいのですがどんな関数を使えばいいのか分かりません。 データベースシートのB5~B204までには「現場名」が入力されていて、C5~AJ5までは費目別に合計金額が入力されています。C3~AJ3には費目(運搬費・施工図費・工事管理費など)が入力されています。 日報シートのA1~A26には費目が入力されていて、別シート(予算シート)のA1に現場名が入力されたら日報シートのB列に費目別に合計金額を反映させる関数を入力したいのですが・・・なにか良い関数がありましたらよろしくおねがいします。分かりづらい文章ですいません;;

  • エクセルで組み合せ一覧表を作成したいです

    エクセルでシート1のA1~O1の各セルには、アルファベットや数字(1~50)が入っています。 A1~O1までの15個のセルから、6つを選択した時の組み合せ一覧を作成したいと思っています。 組み合わせは計算すると、15C6となるので全5005通りになります。 組み合せの一覧は、シート2に表示させたいです。 (a,b,c,d,e,f)と(b,a,c,d,e,f)は同じものとします。 またA1~O1のセルに入るのは、アルファベットと数字の組み合せが複雑であれば、数字のみとしたいと思います。 関数だけで何とかしようと思いましたが、どうしても無理のような気がしてしまいましたので、こちらにご質問をさせて頂きました。 VBAの知識もないため、自分でプログラムを組む事もできません。 シートにVBAを組み込む方法は、これまでに経験があるので理解しております。 アドバイスを頂けると嬉しく思います。 何卒、よろしくお願い致します。

  • エクセル 抽出

    どうぞ宜しくお願いします A1B1C1のセルが結合してあり セルの中にはカタカナ、ひらがな、漢字、記号、アルファベット、が 30~60文字ぐらい記入されています。 その中のアルファベットが、1文字だけ大文字で必ず書いてあります。 大文字ではありますが、半角の場合も全角の場合もあります そのアルファベットの1文字だけE1に抽出表示させたいのです。 A1B1C1にはアルファベットも残したまま1文字だけE1に抽出表示させたいのです。 出来るのであれば、ですが、大文字の半角で表示させたいのです。 PC初心者です、よろしくお願いします

  • Excel 複数のシートを使って自動入力させていです。

    Excel 複数のシートを使って自動入力させていです。 Sheet1に「一覧表」とし、A1に日にち・B1に入荷先・C1「品物名」・D1「金額」を入力していく一覧表を作成しました。 入荷先の名前をSheet2.3に作り、入荷先ごとにリストを作成したいです。 一覧表に入力しただけで、自動的に入荷先ごとのシートに自動的に入力されてるってことって出来ますでしょうか? 例   A   B   C   D 1 日にち 入荷先   品物   金額 2 4/1 Aスーパー たまねぎ  100 3 4/5 B商店    きゅり   50 これをSheet1「一覧表」をした場合、 Sheet2を「Aスーパー」とし、Sheet2を「B商店」として。同じ表を作成しておく。 一覧表のシートにAスーパーでの購入を入力すると、「Aスーパー」のシートに自動的に表が作られていく 説明下手で申し訳ありませんが、よろしくお願いします!

  • エクセルで条件1つで、複数の値を抽出することできますか?

    加工作業の日報をエクセルでつけているのですが、品名と、それに使う資材をあるシートにマスターテーブルとして登録してあるのを前提に、日報のシートで、以下の作業を自動的にでるようにできますでしょうか? ★マスターシート:   A   B 品名   資材名  ←項目名 FD    シール FD    FDケース FD    FD本体 FD    箱 CD-R   シール CD-R   CDケース CD-R   CD本体   ・     ・ ・     ・ ★日報シート:   A   B  FD   シール   ←例えば、このA1にFDと入力すると、      FDケース    B1~B4に資材が出る      FD本体     A5にCD-Rと入れると、B5~B7に      箱       その資材が出る いろいろ検索してみたのですが、知りたいことを見つけることができなかったので、質問します。 関数でできれば一番良いのですが、VBAでもかまいません。 どうかよろしくお願いします。

  • エクセルVBAでVLOOKUP自動参照表示

    計画のファイルがあります。 例えば、"テーブル"シートのA列に品物A、品物B、品物C・・・、と入力されていて、B列にはA列の品物に対応して、付属A、付属B、付属Aなどと入力されているとします。実際は、品物数は数千種類あります。(この例の場合は、品物Aと品物Cは同じ付属を使う) "計画"シートには、B列にデータの入力規則のリストより、品物Aや品物B・・・などを選択します。 現在は、例えばB3:B15までが作業者Aの入力範囲としていたとすると、B5:B15まですべて入力規則のリストになっており、B3に品物Aを選んだらその下のB4に同じくリストから付属Aを選んで入力している状態です。(他の列にVLOOKUP関数を設定すると簡単にできると思いますが、これ以上列を追加表示すると印刷時縮小されすぎて却下です) 作業者Aの入力範囲のどこにで品物の選択をできるようにしておきたいので、入力範囲にはすべてリストが設定されており、数式を入れることはできません。 VBAでVLOOkUP関数を使えばできそうですが、リストから"テーブル"シートのA列の品物を選択したら、その下のセルにB列より参照して表示させればいいのでしょうが、やり方が分かりません。 作業者Aの本日の計画がB3:B15、作業者Bの本日の計画がB17:B29、作業者Aの翌日の計画がG3:G15、作業者Bの本日の計画がG17:G29とすると、その範囲に入力したら自動で参照して表示させ、また"テーブル"シートのB列が空欄なら何も表示しないようにさせるにはどうしたらよろしいでしょうか? たびたびすいませんが、どうやったらよろしいでしょうか?エクセル2013です。

  • エクセルの順位抽出について

    Sheet1のA列にコード、B列に商品名、C列に分類 D列に売上数、 E列に売上金額を入力した一覧表があります。 A_1:1000 B_1:牛肉 C_1:食品 D_1:20 E_1:3000 A_2:1050 B_2:お茶 C_2:飲料 D_2:18 E_2:3010 A_3:2000 B_3:鉛筆 C_3:文具 D_3:12 E_3: 900 A_4:2050 B_4:お米 C_4:食品 D_4:12 E_4:9010 A_5:3000 B_5:牛乳 C_5:飲料 D_5:25 E_5:2000 A_6:3050 B_6:定規 C_6:文具 D_6:28 E_6: 700 中略 A_300:10000 B_300:肉まん C_300:食品 D_300:38 E_300:9000 1.食品対象で売上金額の上位20のコードをSheet2のA列に表示 2.全商品対象で売上金額の上位20のコードをSheet3のA列に表示 上記の様な抽出をしたいのですがどの様な関数を使用すれば良いでしょうか? (オートフィルタを使用してのコピペという手作業をなくすためにSheet1の内容が更新されれば自動でSheet2,3の内容も更新されている のが希望です) よろしくお願いします。