システムwiki

より良い方法(?)ワークブックから選択したワークシートを削除する(VBA、Excel 2016)

JonK.Jr 受付中 最終更新日:2021-06-15 02:50

マスターブックから選択したワークシートのセットを削除するための効率的な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)

2 #
Jeovany

こんにちはJon

私の提案

マスターワークブック上のすべてのシートを介してループではなく、選択されたプロジェクトリーダーに属していないものを削除してください.

あなたが投稿したコードから、Aprojectのリーダーは複数のプロジェクトを持つことができるようです.

TheAprojectのリーダーが複数のシートタブを持つことができることを意味します

プロジェクトの名前=シート名

それで、それぞれのシート上のどこかに書かれたProjectリーダーの名前が必要であろう、好ましくは同じセル上で、A2.

1-次のようなマスターブックで新しいシートを作成しましょう.下の図の1つと似ています.

2-スペルミスを回避するためにデータ検証を使用する

マクロは:

です

1-リスト内の名前をすべてループ

2-新Workbook

を作成します

3-選択されたプロジェクトのリーダー名を探しているマスターワークブックのすべてのシートをループしてください

4-すべての対応するプロジェクトシートを新しいワークブック

にコピーする

5-して「ProjLead」&「_list_」として保存します.

6-列の「プロジェクトファイル名-リンク」マクロは、新しく作成されたファイルへのリンクを挿入し、列C「プロジェクト数」は、リーダーが=シートタブの= P>を持っているプロジェクトの数を表示する可能性があります.

これは私があなたの目標を達成するために私が思う「より良い」方法です

応答2# ->にスキップ
1 #
Rohn007

考慮すべき代替アプローチ

  • すべてのタブを単一のタブにマージします.
  • プロジェクトID列を追加するので、データの高レベルのビューが次のようになります.
  • スライサーまたはフィルタを使用して、不要なプロジェクトを選択する
  • 行を削除
  • ブランクを削除するようにデータをソートします.

選択はいくつかの方法で行うことができます:

不要なマネージャを選択するためのフィルタ内に組み込まれています

不要なマネージャーを選択するためのスライサー