• ベストアンサー

エクセルマクロで条件に当てはまるシートの名前

何日も試行錯誤しましたが、わからないので教えてください。 あるファイルがあります。 そのファイルには数十枚のほぼ同じ形のデータが入ったワークシートがあります。 それぞれのワークシートには、ある範囲(例 A5:D10)にデータが入っていたりいなかったりです。 そこで、その範囲にデータが無ければ、別のブックの例えば「リスト」というシートに一覧にして、そのシートの名前を書き出したいのです。 それをマクロで記述するやりかたがどうやってもうまく行きません。 どうかお教えください。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

●「データが入ってる」とは,その範囲に「生データが記入」してあったり無かったりするという意味で良いのか ●そもそも「一つも入ってない」「部分的に入っている」「全部埋まっている」など,どんな状態を調べたいのか といった部分が説明不足のようです。 準備: マクロブックと「あるブック.xlsx」を開いておく マクロブックに「リスト」シートを用意,次のマクロを登録,実行する sub macro1()  dim w as worksheet  workbooks("あるブック.xlsx").activate  for each w in activeworkbook.worksheets ’生データの有無を検査  if application.counta(w.range("A5:D10")) =0 then ’<24 とすると部分空白   thisworkbook.worksheets("リスト").range("A65536").end(xlup).offset(1) = w.name  end if  next end sub

ngttyy
質問者

お礼

私の説明不足で他の回答者の方にもご迷惑をお掛けしました。 この方法でスパッとうまくいきました。 どうもありがとうございました。

ngttyy
質問者

補足

確かに説明不足ですみませんでした。 その範囲に全くデータの入っていないシートと、 その範囲に少しでもデータの入っているシートの二種類があります。 その全くデータの入っていない方のシートの名前のリストがほしいのです。 教えていただいた物は明日会社に行ったら試してみます。 ありがとうございます。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.2

No1です 「あるファイル」にコードを記載するのでしたら ThisWorkbook.Activate を最初の方に入れておいた方が安全です。 また、別のファイルから「あるファイル」や「別のブック」を操作するのでしたら、たとえば Sub Example() Dim i As Integer, j As Long Dim c As Range j = 1 With Workbooks("あるファイル.xlsx") For i = 1 To .Sheets.Count For Each c In .Sheets(i).Range("A5:D10") If c.Value = "" Then Workbooks("別のブック名.xlsx").Sheets("リスト").Cells(j, "A") = .Sheets(i).Name j = j + 1 Exit For End If Next Next i End With End Sub などのようにしてください。

ngttyy
質問者

補足

早速ありがとうございます。 明日会社に行ったらやってみます。

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

たとえば、その範囲内のセルに一つでもデータがなければリストに出すのでしたら以下のコードでいかがでしょう。 Sub Example() Dim i As Integer, j As Long Dim c As Range j = 1 For i = 1 To Sheets.Count For Each c In Sheets(i).Range("A5:D10") If c.Value = "" Then Workbooks("別のブック名.xlsx").Sheets("リスト").Cells(j, "A") = Sheets(i).Name j = j + 1 Exit For End If Next Next i End Sub

ngttyy
質問者

お礼

私の説明不足から、残念ながらこのコードでは抽出ができませんでしたが、大変素早いご回答をありがとうございました。

関連するQ&A

  • エクセル・マクロ・・・シート名の取得等

    エクセル・マクロ・・・シート名の取得等 エクセルのマクロで質問です。 ほぼ初心者です。 社内データの処理をしたいと考えています。 マクロを組みたいエクセルブックの構成としては・・・ シート名一覧 集計シート 操作 という3つのシートがあり、 その後ろに各社員のデータシートがあります。 山田太郎 田中花子 ・ ・ ・ 部署により社員数が異なるためシートの4枚目以降は そのエクセルファイルによりシート数が異なります。 やりたいことは以下の2点です。 (1)シート名(社員名)の取得 シート名一覧に各シート名を一行ずつ入れて 一覧を作りたいです。 シート名取得&リスト化のマクロは大体わかりますが、 「シート名一覧」、「集計シート」、「操作」の3つのシート名は 一覧から外したく、どうしたらいいのかわかりません。 また、各シート名を取得した列の横の列に 各社員のシートにあるデータの一部(セルC5:C8)を 貼り付けたいです。 (2)集計シートに各社員のシートのD列の情報(D6:D43)を順に貼り付けていく。 シート名や数が固定されたものであれば何とかできそうなのですが、 不特定になるとどうしたらよいかさっぱりわかりません。 どなたかご教授お願いいたします。

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

  • Excelマクロで置換

    Excelマクロで置換 セルA1に6桁・スペース・24桁の数字が入っています。 最初の6桁に130,397,430,440が含まれているシートを選択 そのシートの中に "ああああ"があったら"ああああい"に "いいいい"があったら"いいいいう"に "うううう"があったら"ううううえ"に と置換をするマクロを書きたいと思っています。 置換する対象の文字列は多いので別マクロで作成し呼び出したいと考えています。 シートは1ブックに30シート程。何シートあるかはブックによって変わります。 現在マクロの記録を使って試行錯誤しているのですが なにぶん初心者なのでなかなかうまくいきません。 どなたかご教授頂ければと思います。

  • エクセルのマクロで...

    エクセルのマクロなのですが、うまく実行されません。 sheet1・sheet2とシートがあって、 sheet1のデータを範囲にして、既存のワークシート に保存の形でsheet2にピボットテーブルを作成し、 できたピボットテーブルの、フィールドを"表示しない" にする、というマクロを作成し、実行したのですが、 ピボットテーブルは作成できるところまでは実行される のですが、「フィールドを"表示しない"」が 出来ません。なぜがsheet1の元のデータがデリート されてしまいます。 マクロ初心者なので、困っています。 どなたかご存知でしたらお願いします。

  • エクセルマクロで行いたいのですが、できるのでしょうか?

    ネットワーク上にエクセルで作成したファィルが3つあるとします。 その3つのファイルに対してマクロの指示を実行させ(検索の種類を分ける)る方法って可能でしょうか? 例) (1)A付属品ファィル (2)B付属品ファィル (3)Cカートリッジ一覧ファィルがあるとします。 これを、新規のエクセルのシートに3種類の検索画面を作り、3つのファィルの検索は出来るのでしょうか? できる場合は新規のエクセルシートにだけ、マクロを記述すればよいのですか? どのようなマクロを作成し、どのシートに記述するのですか?教えてください。 教えてください。

  • エクセルでシートコピーするマクロについて

    マクロ初心者です。宜しくお願いします。 エクセルで一つのSheet1があります。そのSheet1には、一覧表があります。マクロを実行することで、Sheet1の後ろにSheet2を作成して、Sheet1と同じ一覧表をコピーして表示できるようにし、それを、マクロを実行すれば、ワークシートが一枚追加され、Sheet2のシート名になり、シートを追加する度にシート名が、Sheet3、Sheet4、Sheet5となるようにしたいです。 分かりづらい説明ですが、宜しくお願いします。

  • Excel 入力して置換するマクロ

    Excel 入力して置換するマクロ 同一書式で作成された表がある複数の書式シートのデータを、同一ブック内にあるデータ集約するための集約シートが「表 あ」にあります。 都合上、集約シートには表は、「表 あ」しかなく、1つの書式シートのデータのみしか表示していません。 書式シートのデータを参照する計算式内のシート名にあたる『Sheet1!』の部分を置換で他の書式シートに変えたいのですが、対象シートが複数あり上、誰でも置換をスムーズに行いたいので、インプットボックスにシート名を記載すれば置換できるマクロが作れないのか試行錯誤しております。 良い方法があればお教え下さい。

  • エクセルマクロ:リストについて

    すみません、やっぱり分からなくなってしまったのでもう一度 質問させて下さい。 ボタンでマクロを実行すると、user formが開き、[ブック取得]という コマンドボタンを押すと現在開かれているブック名がリスト一覧で出てきます。 その一覧のうち一個のファイルを選択して[修正]ボタンを押すと 対象のブックにあらかじめ設定されているマクロが実行されると 言うのを作りたいと思っています。 わかりにくいかとは思いますがよろしくお願い致します。

  • EXCELのマクロで

    よろしくお願いします。 さて、過去にとあるEXCELのブックにマクロを登録しました。そのマクロも不要となり、マクロ一覧から全て削除した。 最近になってそのファイルを雛型として使用するケースが増え、名前を付け替えて使用していますが、ファイルを開く度に『マクロを有効にしますか?』と聞いてきます。 (マクロのセキュリティは中にしてあります) 正直 これがかなりウザいのですが、どうすれば聞いてこなくなるでしょうか? (但し、マクロウィルス防止の為、セキュリティは中のまま使用したいと思っています) シートだけを新規のブックに保存すればいけるとは思うのですが、現在のブックの何が問題なのかを知りたいのです。 尚、マクロ実行のダイアログを出しても、登録したマクロは何も残っていません。

  • Excelマクロ シート名一覧からシート削除

    Excelマクロで質問させてください。 任意のシートに記載されたシート名一覧を参照して、そこに記載されているシート名のシートを、ブック内から削除するマクロは作れますでしょうか? よろしくお願いします。

専門家に質問してみよう