Excelで必要のないシートを削除する方法

このQ&Aのポイント
  • 毎日送られてくる発注ファイルを元に、部品ファイルから必要のないシートを削除する方法について教えてください。
  • 部品ファイルには100種類以上のシートがあり、発注ファイルの品名を見て必要なシートだけ残したいです。
  • 部品ファイルの所の数量には=VLOOKUP関数が使われており、すぐに統合できますが、シートを手動で削除するのは時間がかかります。効率的な方法があれば教えてください。
回答を見る
  • ベストアンサー

excel 何種類のシートから必要のシート以外削除

少し困っているので、質問させて頂きます。 毎日excelで発注ファイルで送られてきて、その発注ファイル(品名、数量)を見ながら、別の部品ファイル(sheet名が品名)に、いらないsheetを削除し、数量をいれて統合しているのが現状です。 部品ファイルの所の数量は=VLOOKUP関数をいれてあるのですぐにできるのですが、100種類以上ある品名シートを削除するのは正直時間が掛かります。 発注ファイルの品名を見て、部品ファイルの必要なsheetだけ残したいのですが、どなたかよい方法を教えて頂けないでしょうか?お願いします。 例を下に書きます。 ●部品ファイル    種類(sheet名)  ランクル・カローラ・セルシオ・ヴィッツ・プリウス ・プラド・ノア・ハイエース     ●発注ファイル        A列         B列    品名        数量(部品ファイルの数量のセルに=VLOOKUP関数を入れてあります。)    カローラ       2    ヴィッツ       4  プリウス       1 ノア          6  発注ファイルが送られてきて、発注ファイルの品名を見て、部品ファイルのsheet名が  ランクル・セルシオ・プラド・ハイエースのsheetが削除されている状態にしたいです。  宜しくお願い致します。    

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 前回のコードの For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row Str = Str & wS.Cells(i, "A") & "," buf = Left(Str, Len(Str) - 1) myArray = Split(buf, ",") Next i の5行を For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row Str = Str & wS.Cells(i, "A") & "," Next i buf = Left(Str, Len(Str) - 1) myArray = Split(buf, ",") のように5行目を3行目に入れ替えてください。 前回のコードでも動くと思いますが、 厳密にいえば後者のコードが正解です。 何度も失礼しました。m(_ _)m

taichibon
質問者

お礼

本当にありがとうございます。 助かります。マクロを実行したことがないのですが、すごく勉強になりました。 プログラムコードをここまで書いて頂き感謝いたします。 プロシージャーの外では無効です。とエラーが出てしまうのですが、もう少しの所だと思います。 このコードを参考に解決していきたいです。 ありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! Sheetそのものが削除されますが、それでも良いのですよね? VBAになってしまいますが、一例です。 前提条件として (1)●発注ファイル は 【発注】(前後の【 】は不要です) というSheet名にして 100Sheet以上ある「部品ファイル」に追加しておいてください。 (最初でも最後でもどこでも構いません) (2)発注 SheetのA列に残したいSheet名の部品が羅列してあり、2行目以降にデータがあるとします。 「部品ファイル」を開き → Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sheet削除() 'この行から Dim i As Long, k As Long, str As String, buf As String Dim wS As Worksheet, myFlg As Boolean, myArray Set wS = Worksheets("発注") '←必ず「発注」というSheetを追加! For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row str = str & wS.Cells(i, "A") & "," buf = Left(str, Len(str) - 1) myArray = Split(buf, ",") Next i Application.DisplayAlerts = False For i = Worksheets.Count To 1 Step -1 myFlg = False For k = 0 To UBound(myArray) If Worksheets(i).Name = myArray(k) Then myFlg = True Exit For End If Next k If Worksheets(i).Name <> "発注" Then If myFlg = False Then Worksheets(i).Delete End If End If Next i Application.DisplayAlerts = True End Sub 'この行まで ※ 一旦マクロを実行すると元に戻せませんので、 別ファイルでマクロを試してみてください。 (例)ファイルが保存してあるフォルダ内(ドキュメント等)内で同じExcelファイルをコピー&ペーストし それを利用するなど・・・m(_ _)m

  • yosifuji20
  • ベストアンサー率43% (2675/6115)
回答No.1

マクロを使えば可能です。 考え方としては、削除したい名前が入っているセルを読んで、その名前に等しいsheetを削除するということを自動的に実行するということです。 ただし、常に同じsheet名を削除するのはマクロでも簡単ですが、その都度異なるsheet名を読み取って削除するというのはかなり慣れた人でないと難しいと思います。 どなたかEXCELのマクロ言語VBAに詳しい人に相談される方がよいと思います。 一番簡単なのは、ランクル・カローラ・セルシオ・ヴィッツ・プリウス ・プラド・ノア・ハイエースの現実のsheetを削除するマクロを記録して、それにそれぞれランクル・カローラ・セルシオ・ヴィッツ・プリウス ・プラド・ノア・ハイエースというマクロ名を付けることです。 必要なsheet名に相当するマクロを実行すればそのsheetだけ削除することができます。 これはマクロの記録で作ることができます。

taichibon
質問者

お礼

ありがとございます。 マクロの勉強を頑張っていきたいと思います。 とても参考にさせていただきました。 ありがとうございました。

関連するQ&A

  • Excel 数を別のファイルのシートに入れたいです

    質問させて頂きます。 Excelのファイルで品名と数量があり、別のファイルでシート名に品名が入っていて、部品が何種類か入っています。今までは品名と数量を見て、別のファイルの部品のところに品名の数量を手打ちで数を入れていたのですが、何種類もの品名がある為、時間がかかるのが現状です。 どなたかよい方法を教えて頂けないでしょうか。 例を下に書きます。 (品名ファイル) 品名    数量 タンスA 5 タンスB 2 タンスF 3 (部品ファイル) タンスA(シート名) 部品名   数量 長引出 5 小引出    5 中引出 5 タンスB(シート名) 部品名   数量 中引出 2 小引出 2 タンスF(シート名) 部品名   数量 大引出    3 特引出    3 品名ファイルの品名、数量を見て、部品ファイルのシートに数量を反映させたいです。 なお、 A列、品名 B列、数量 A列、部品名 B列、数量が入っています。 宜しくお願い致します。

  • 伝票から種類分けして合算。

    一覧表を作り、そこからVLOOKUPで 品番から伝票に品名、価格を引っ張ってきているのですが、 その出来上がった伝票がシートに複数ある場合 品名ごと、もしくはその複数品名のグループで合算して それらの数量、価格を合計したいのですが 関数は何を使えばいいでしょうか。 また、 違うブックのA1から引っ張ってくる際は ブック名にファイル形式の .~ というのはつけるのでしょうか。

  • エクセルのデータ抽出で列が飛び飛びなんですが

    仕事でエクセルを使い始めた初心者です。 シート1に B    D    E     G       K    L   ←列番号 品名 型番 メーカー 数量 ~~ 発注先 単価 ~~ ○○ △△ ××    5  ~~ ◎◎◎ 100 ~~ ●● ▽▽ ××    3  ~~ ■■■ 500 ~~ ∵∵ □□ ▲▲    1  ~~ ◎◎◎ 400 ~~ といった感じで何百件もデータを入力してありまして これをシート2で 発注先 ◎◎ ←ここに発注先名をいれる A    D    H     J    L 品名 型番 メーカー 数量 単価 ○○ △△ ××    5  100 ∵∵ □□ ▲▲    1  400 こうやって必要なところだけを抽出させたいのですが 範囲の指定の仕方がわかりません。 VLOOKUPだと一つ一つ入力しないといけなそうですし AdvancedFilterだと飛び飛びの列の指定の仕方がよくわからないのです。 列番号が飛んでるのは、セルの結合などが多々まぎれてるからです。 どんな構文をかけばいいんでしょうか?

  • 分けて作成したシートを自動的に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店+…の全ての発注内容)まとめることは出来ますか。 エクセルについてはあまり詳しくないのですが、何か方法があれば教えて下さい。 宜しくお願いします。

  • Excel VLOOKUP関数の縦検索は出来ないのでしょうか?

    A列   B列   C列   D列 --------------- 品名   数量  数量  数量      12/1  12/5  12/10 みかん  10箱  15箱  10箱 いちご      3箱 りんご  5箱   2箱  10箱 上記のような表を、日付で抽出し、発注書を作成したいのですが、縦で抽出することなんて出来ませんか? 今は、別のシートに行列を入れ替えて貼り付けをして、そこからVLOOKUPで参照しています。 よろしくおねがいいたします!

  • VLOOKUPとINDIRECTで別のEXCELファイルのシートを参照したい

    EXCEL2007を使用しています。 添付画像のように、例えば、B2のセルには =IFERROR(VLOOKUP(A2,INDIRECT($B$1&"!a:b"),2,FALSE),0) という関数があり、VLOOKUPとINDIRECTを使って同じEXCEL内の 別のシートを参照するようにしてあります。 ※シートをそれぞれ 0910,0911,0912という名前にして各年月毎に 商品コードと数量を入れてあります。 この商品コードと数量が入ったシートを数量.xlsxという別のEXCELファイルにして このMAINのEXCELシートにデータを持ってきたいのです。 何か方法はありますでしょうか?よろしくお願いします。

  • エクセルでの管理方法を教えてください

    エクセルで次のような管理をしたいのですが方法はありますか? 例えば 毎日作成する発注書があります。 この発注書の内容を関連付けて別のシートまたはファイルの一覧表に自動出力される方法 入力は発注書へ入力をして一覧表への出力でも、逆に一覧表へ入力をして発注書へ出力でもどちらでもいいです。 発注書は社内管理のため一度プリントをする必要がありますがその後は保存の必要はありません。 項目は次の通りです 発注書 No.=J1 発注先=B4 発注日=B7 品名=A11 規格=C11 数量=D11 単価F11 納期=H11  一覧表(別シートまたは別ファイル) No.=A2 発注先=B2 発注日=C2 品名=D2 規格=E2 数量=F2 単価G2 納期=H2 品名以降の項目は複数になる場合があります。 以上、よろしくご指導お願いします。 

  • Excelでデータ抽出処理をオートフィルタではなく関数でできませんか?

    Excelで、発注書を作成しようとしています。 1、Sheet1には<発注先><品名><数量>のデータになっており、   同じ発注先のデータも含んでいます。   <発注先> <品名> <数量>    A社   みかん   10    A社   もも     5    B社   ぶどう    3    C社   みかん    5    C社   バナナ    5 2、このSheet1のデータを各発注先ごとに発注書を作成するため   別シートに用意した発注書フォーマットに貼り付けたい。   (注:発注先は60社ほどあり、オートフィルタで発注先ごと      にコピペしていくのは、困難です)  できれば関数でできればいいのですが、何かよい方法はないでしょうか?よろしくお願いします。    

  • エクセルで2つの条件から検索する方法知りませんか

    だれか教えてください。 顧客 品名 1月数量  2月数量 A       N1 A      N2 A    N5 B    N1 B    N2 B    N4 毎月ごとの顧客 品名 数量の集計結果が出てくるのですが、それを 月毎のトレンドで見ようと数量を定型のシートに集計しています。顧客だけとか 品名だけならVLOOKUPで検索できるのですが、同じ品名で顧客が違うケースがあり、いつも手入力で苦労してます。なにかよい関数の組合せ はないものでしょうか? エクセル2003を使用しています。

  • 結局ザ・トヨタって

    なんでしょうか? 世界的なランクルやハイエースは別として、 カローラ(フィールダー込)~世界基準だけど基幹 レクサスLS~量産最上級 センチュリー~御両車 アルファード~上級ファミリーカー プリウス~なんだかんだ市販の先駆 … ↑結局、トヨタの象徴はなんでしょうか?

専門家に質問してみよう