より良い方法(?)ワークブックから選択したワークシートを削除する(VBA、Excel 2016)
マスターブックから選択したワークシートのセットを削除するための効率的なVBAソリューションを求めています.マスターは100ワークシート100ワークシート、それぞれ仕事プロジェクトに専用、各プロジェクトにはプロジェクトリーダーがあります.それぞれのプロジェクトはかなりのサイズのワークシートです
そして複雑さ.
私の問題を説明するために、シート名「aa」、bb "、cc"、..."zz"で指定された26個のプロジェクトしかないと思います.これらのプロジェクトタブは任意の方法でソートされていません.それらのシートを削除することで、いくつかのリーダーのマスターを調整する必要があります.
マスターが定期的かつ定期的に更新された後にそれらに関連していません.私はより良いアンドファスター(!)アプローチを探しています、そして以下の単純化された一般的な例-
"master.xlsm" 'generic command
を開くProjLead= "Mary" 'プロジェクトリーダーを選択する
このWorkbook
の各SHTについてPROJ= SHT.NAME
ケースPROJLEAD
を選択してくださいケース「Tom」のTom's Projects= "CC"、 "FF"、 "LL"
ケースPROJ
を選択ケース「CC」、「FF」、「LL」
ケース
sht.delete
終了
ケース「メアリー」
ケースPROJ
を選択ケース
sht.delete
終了
ケース「BILL」
ケースPROJ
を選択ケース「AA」、「GG」、「TT」、「UU」、「VV」、「ZZ」
ケース
sht.delete
終了
終了
次のSHT
このワークブック..このワークブック.「ProjLead」&「_list.xlsx」または同等の
1行1ループなしのマスチェットの大部分のワークシートを削除するためのより良い方法があります[各タブを調べる、IF'BAD]を削除してからループを続けます.私は前にそのようなルーチンを見たことがわかりましたが、私は魔法の検索文字列を思いつくことができませんでした
それを見つけるために.
Ibelieveの代わりに「すべての不要なタブをハイライト/選択してから、en Masse」または一部の配列ソリューションを削除しますか? IIRCこれは存在しますが、VBA構文に関与するトリックがあります.
返信リスト(回答:2)
こんにちはJon
私の提案
マスターワークブック上のすべてのシートを介してループではなく、選択されたプロジェクトリーダーに属していないものを削除してください.
あなたが投稿したコードから、Aprojectのリーダーは複数のプロジェクトを持つことができるようです.
TheAprojectのリーダーが複数のシートタブを持つことができることを意味します
プロジェクトの名前=シート名
それで、それぞれのシート上のどこかに書かれたProjectリーダーの名前が必要であろう、好ましくは同じセル上で、A2.
1-次のようなマスターブックで新しいシートを作成しましょう.下の図の1つと似ています.
2-スペルミスを回避するためにデータ検証を使用する
マクロは:
です1-リスト内の名前をすべてループ
2-新Workbook
を作成します3-選択されたプロジェクトのリーダー名を探しているマスターワークブックのすべてのシートをループしてください
4-すべての対応するプロジェクトシートを新しいワークブック
にコピーする5-して「ProjLead」&「_list_」として保存します.
6-列の「プロジェクトファイル名-リンク」マクロは、新しく作成されたファイルへのリンクを挿入し、列C「プロジェクト数」は、リーダーが=シートタブの= P>を持っているプロジェクトの数を表示する可能性があります.
これは私があなたの目標を達成するために私が思う「より良い」方法です
応答2# ->にスキップ1 #Rohn007考慮すべき代替アプローチ
- すべてのタブを単一のタブにマージします.
- プロジェクトID列を追加するので、データの高レベルのビューが次のようになります.
- スライサーまたはフィルタを使用して、不要なプロジェクトを選択する
- 行を削除
- ブランクを削除するようにデータをソートします.
選択はいくつかの方法で行うことができます:
不要なマネージャを選択するためのフィルタ内に組み込まれています
不要なマネージャーを選択するためのスライサー