エクセルでの各シートのデータの一斉削除

このQ&Aのポイント
  • エクセル2002で作成している、家計簿をrenewしたいと思い、各シートに入っているデータが一斉に消去されない問題について
  • 1月から12月まで作成した各シートには収入と支出のデータがあり、最後のシートで各シートの項目ごとの月ごとで年合計をしています
  • 1-12月までのシートを選択し、「編集」→「ジャンプ」→「セル選択」→「定数」→「数値」にチェックを入れ、OK後「delete」を選択しても、一部のシートの数字が消去されず、他のシートの数値も消去されない問題が発生しています。正しいやり方を教えてください
回答を見る
  • ベストアンサー

エクセルでの各シートのデータの一斉削除

年も改まりましたので、エクセル2002で作成している、家計簿をrenewしたいと思い、下記操作を行いましたが、各シートに入っているデータが一斉に消去されません。どうしてですか? 尚、XPを使用しております 1.各シートは1月から12月まで作成し、各費用ごとの項目に基づき収入、支出をinput。最後のシートで各シートの項目ごとの月ごとで年合計をしています。 2.月ごとの収支の数字を消すため、1-12月までのシートをshiftを押して、選択し、各シートの記入した範囲のセルを全部選択し、「編集」→「ジャンプ」→「セル選択」→「定数」→「数値」にチェックを入れ、OK後「delete。 全部のシートを選択しているので、各シートの数字が消去されると思ったのですが、出ているシートのみの数字の消去に終わり、他のシートの数値が消去されていません。何故でしょうか? 正しいやり方を教えてください。

  • tozaki
  • お礼率89% (210/234)

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

  • ベストアンサー
  • avanzato
  • ベストアンサー率54% (52/95)
回答No.9

#2です。 こちらこそ何度もすみません。 実行エラー1004の原因ですが、コードを実行しシートを順に選択して行き「ジャンプ」→「Delete」を行うのですが「ジャンプ」を行う時点で既にそのシートに定数の数字が存在しない場合ジャンプを実行することが出来なかったというエラーが発生します。 私の予測範囲外でした。^^; VBAの一部修正です↓ Sub Sample() On Error Resume Next '←追加 Dim W As Worksheet でお願いします。 今回追加した行の意味は「エラーが発生しても処理を続行する」という命令です。 単純なプログラムなのでこれで問題ないと思われます。 別途質問を頂きました「プロジェクト」画面についてですがメニュー「表示」の中にある「プロジェクトエクスプローラ」というものが表示されているか否かの違いだけで問題はありません。 尚、質問者の補足欄の添付は無かったような気がします。 まだ2回しか質問をしたことが無くそのあたりは分かりかねます。^^;

tozaki
質問者

お礼

avanzato様 見事に消えました!! ありがとうございました。大変お時間を使っていただき、avanzato様のご親切、本当に心からお礼申し上げます。 いろいろ、教えていただき、又、私にとって新しい世界を見せていただきましたので、これからVBAを勉強したいと思っております。まず、手始めに、avanzato様が作っていただいたこのプログラムを、ご紹介いただいたサイトと本を参考にして自分で作ることからスタートしたいと思います。 尚、これはご返事いただかなくて結構なのですが、10月のシートの数字だけ残り、狐に包まれた気持ちです。 最後になりましたが、重ねて、厚くお礼申し上げますとともに、avanzato様の益々のご活躍をお祈り申し上げます。ありがとうございました。

その他の回答 (8)

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.8

#2です。 すみません。 オプションの関係で「Option Explicit」は出る出ないがありデフォルトでは出ないようになっていました。 >出てきた画面のメニュー「挿入」→「標準モジュール」を選択してください。 >「Option Explicit」と書かれたモノが表示されます。 >Option Explicitの下の行に↓↓↓↓をコピー&ペーストしてください。 の部分の訂正です。 出てきた画面のメニュー「挿入」→「標準モジュール」を選択してください。 「(General)」と表示されているところのやや下でカーソルが点滅しています。 カーソルが点滅している行に↓↓↓↓をコピー&ペーストしてください。

tozaki
質問者

補足

avanzato様。おはようございます。何度も申し訳ありません。 「alt」→「F8」→「実行」まで作業しましたところ、「実行時エラー’1004’ 該当するセルが見つかりません」というエラーメッセージが出てしまいました。「年合計」のシート名が間違っているかなと思い、確認しましたが、「年合計」で間違いありません。他は月名です。 私のvisual basicの画面は、avanzato様のご解答に添付されておりました画面の、左部分「プトジェクト」欄の「VBA Project(book1)]」のところはなく、いきなり、(general)です(画面のコピーはwordにとったのですが、この補足の画面にも「画像」添付欄が無く、その画像をここに貼り付けることができませんでした。画像の画像はどうやって貼り付けるのですか?)。

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.7

#2です。 VBAを利用する方法及び説明です。 まず、キーボードの「ALT」を押しながら「F11」を押してください。 すると、「Microsoft Visual Basic ~」と言う画面が出てくるかと思います。 出てきた画面のメニュー「挿入」→「標準モジュール」を選択してください。 「Option Explicit」と書かれたモノが表示されます。 Option Explicitの下の行に↓↓↓↓をコピー&ペーストしてください。 Sub Sample() Dim W As Worksheet For Each W In Worksheets If W.Name <> "年合計" Then Sheets(W.Name).Select Selection.SpecialCells(xlCellTypeConstants, 1).ClearContents End If Next W MsgBox ("完了") End Sub ↑↑↑↑↑↑(この矢印の上の行までです。) ペーストが完了したら、「Microsoft Visual Basic ~」という画面は「×」を押して閉じてください。 この時点で当初のエクセルの画面に戻ります。 次にキーボード「ALT」を押しながら「F8」を押します。 タイトルバーに「マクロ」と書かれた画面が表示されマクロ名の欄が「Sample」となっているかと思います。 この状態で「実行」を押してください。 上記VBAコードが実行され完了すると「完了」と表示が出ます。 以上で年合計以外のシートの数字の入力のみが消えています。 処理の流れですが自動操作でブック内のシート名を読み上げていきます。 シート名が「年合計」以外のシートであれば質問者様が当初やられていた >「編集」→「ジャンプ」→「セル選択」→「定数」→「数値」にチェックを入れ、OK後「delete を処理します。 全てのシート名が読み終わったら「完了」と表示する。 といった概略になります。 使って見ると「便利」と思われるかと思います。 これを機にVBAを勉強して見るのも良いのではないかと思います。 余計なお世話かと思いますがVBAの入門サイトを載せて置きます。 http://excelvba.pc-users.net/ 追伸 通常、手動による間違った変更を行ったときは「編集」→「元に戻す」で元に戻ることが出来ますがVBAを使用した変更はこの方法で元に戻ることが出来ません。 それだけは注意をしてください。

tozaki
質問者

お礼

この質問のため、avanzato様には、貴重な時間を割いていただきましたこと、大変申し訳なく思っております。また、そのご好意、心からお礼申し上げます。 ご指示通り、「標準モジュール」出しましたが、最初、「option explicit」画面でなく、他の画面が出、もう一度やり直しましたら、今度は「general」という画面になり、「option plicit」という画面が出てきません。 私の質問の中に「excel2002」と記載してしまいましたが、再度、確認したところ「excel2000」でした。この影響でしょうか? http://excelvba.pc-users.net/を開き、通読いたしました。内容については、残念ながら、今の時点では理解できませんでしたが、こういう世界があるのかと感じさせていただきました。有意義なサイトのご紹介ありがとうございました。本も購入し、勉強したいと思っております。

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.6

#2です。 やはりVBAを利用した方法が確実かと思います。 13枚のシートのシート名を返信願います。 返信を頂き次第VBAの利用方法を説明します。

tozaki
質問者

補足

何度もありがとうございます。 シート数は13枚。1-12枚のシート名はそれぞれ「1月」「2月」---「12月」で、13枚目は年合計。 各シート(各月)の列は1日から31日、そして合計。 各行は項目(例えば食費(主食費、外食費)、雑費(雑貨、郵便費etc)、そしてその小計や合計が入っています。 年合計には、列に各月の合計(例えばD列に1月の各月の行毎、E列に2月の項目ごとの月合計)がリンクされ、最後に合計が入っており、1月からの項目ごとの合計がされるようにしております。 お手数おかけいたしますが、何分ともVBAを勉強したことがないので、よろしくお願いいたします。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

回答No1です。 同じ作業グループになっていることを確認するには、Shiftを押しながらシート名を選択すればそれらのシートはより白くなっています。また、そのシート名を右クリックすれば「作業グループ解除」の文字が見られます。これはそのシートが作業グループに入っていることを意味しています。また、画面最上段のタイトルバーにはカッコつきで作業グループの文字が見られる事でしょう。 そのように選ばれたシートが作業グループに入っていることを確認したうえで、お示しのような削除の操作をすればよいでしょう。

tozaki
質問者

お礼

おはようございます。朝からご返事ありがとうございます。 「作業グループ」確認しました。最上段にも「作業グループ」の文字ありますし、右クリックで「作業グループ解除」がありましたので、作業グループに入っています。 その上で、私の質問に記載の操作を再度いたしましたが、すべてのシートの数値のみ削除ができませんでした。 お気づきの点あれば、よろしくお願いいたします。

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.4

おはようございます。 #2です。 補足の回答ですが、打ち込む数字はD8からAH90で各シートのフォーマットが同じと言うことですので1月~12月までのシートをシフトを押しながら選択し、D8からAH90を選択しDeleteをすれば選択されているシートのD8からAH90の入力内容が消されます。

tozaki
質問者

お礼

おはようございます。朝からご返事ありがとうございます。 D8からAH90を選択し、そのままDeleteすると、1月から12月の各シートに入っている、項目ごとの小計などの計算式も消去されてしまい、私としては、計算式を残し、単なる数字だけを消去したいのですが。 1-12月のシートには、結構、計算式が複雑に多く入っています。 よろしくお願いいたします。

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.3

#2です。 すみません。 VBAのサンプルでテスト用に使用したコードが一部残ったままでした。 Sub Sample()   Dim W As Worksheet   For Each W In Worksheets     Sheets(W.Name).Select     Selection.SpecialCells(xlCellTypeConstants, 1).ClearContents   Next W End Sub

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.2

こんにちは。 ジャンプを使用した方法ですと、複数のシートを選択している中のアクティブになっている箇所が選択されます。 例えばシート1~シート3まで選択しシート1がアクティブのとき、ジャンプでA8が選択されDeleteをするとシート1~シート3のA8がDeleteされます。 質問にあります1~12月のシート書式(表の行・項目数)が同じならばジャンプではなく手動で消したい範囲を選択しDeleteをすると一括で消えます。 VBAを使用する場合は下記コードを使用してください。 Sub Sample()   Dim W As Worksheet, I As Integer   For Each W In Worksheets     I = I + 1     Sheets(W.Name).Select     Selection.SpecialCells(xlCellTypeConstants, 1).ClearContents   Next W End Sub このコードを実行すると「全て」のシートの定数数字が削除されます。 消したくないシートがあれば除外するコードを追加する必要があります。

tozaki
質問者

補足

ご丁寧にありがとうございます。 VBAは使っておりません。というより、残念ながら、VBAは名前だけ知っているだけで、やり方も表示の仕方も知りません。 打ち込む数字はD8からAH90のセルで、その数字を消したいと思っています。1-12月までと年合計までですので、合わせて1ブックの中で13枚のシートです。そして、1シートの中に縦横に項目ごとに小計やら中計やら合計が入っています。その計算式は消したくないのです。数字だけ消したいわけです。 シート書式はすべて表、項目一緒になっております。そこで、ご回答にあった「手動で消したい範囲を選択」というのは、ジャンプを使わず、1-12までのシートを選択し、計算式の入っているセルだけを選択し、deleteで消すと言うことでしょうか? 稚拙な知識しかなく、折角の丁寧なVBAの方法を使う術を理解できず申し訳ありません。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

それぞれのシートが同じ作業グループになっていることを確認されているのでしょうか?

tozaki
質問者

補足

早々のお問い合わせありがとうございます。 「同じ作業グループ」というのは、一つのブックにあるという意味でしょうか?  1-12月までと年合計までですので、合わせて1ブックの中で13枚のシートにしております。 打ち込む数字はD8からAH90のセルで、その数字を消したいと思っています。そして、1シートの中に縦横に項目ごとに小計やら中計やら合計が入っています。その計算式は消したくないのです。数字だけ消したいわけです。 シート書式はすべて表、項目一緒になっております。 よろしくお願いいたします。

関連するQ&A

  • エクセルでシートを隔てての合計計算

    エクセルでシートを何枚も使い、 月ごとに数字を打つ作業をしているのですが、 年末で数字を合計したいのです。 しかし、毎月のシートで項目は同じなのですが、打ち込んでいるセルの場所が違う場合、同じ項目の合計をしたいのですが、できますか? たとえば シート1(1月)に項目「いろは」があるとして、 セルはA1とします。 シート2(2月)に同じ項目で「いろは」があるのですが、セルがA5になっている。 そのような感じでシート3(3月)、 シート4(4月)…と続いて12月まであります。 年末(12月)で項目「いろは」の1月~12月の数値を合計させたいのですが、可能でしょうか? 方法があれば教えて頂けないでしょうか。

  • エクセルでデータが別シートに反映されない

    パソコン、素人です。 今、エクセルのデータで事業の収支をデータでまとめております。 各月を各シートに記入していこうと思っております。 そして、各シートの「売上合計」の「支出合計」のみをグラフのシートに飛ばし、年間のグラフにしようと思っています。 1、グラフのシートの4月の売上のセルにて「SHIFT」「=」キー 2、4月の収支シートの売上合計のセルにで「ENTER」キー でOKだと思うのですが、「#VALUE!」が表示されてしまいます。 ですが、同じグラフのシートでも同じ1,2の手順で表示されるセルもあります。(同じように「#VALUE!」が表示される場合もあります。) 教えていただけませんでしょうか? 宜しくお願いします。

  • 【エクセル】複数シートの同一セルの内容を別のシートに自動反映させたい

    エクセルについて教えてください。エクセル初心者なので、説明がうまくできないのですが、やりたいことを汲み取っていただけると助かります。 現在複数シートのシートの同一セル上に数字が記入されています。 新たに別シートを作成し、その表に数字が自動入力されるように したいのですが、何か方法はありますでしょうか。 例)(1)シート1~12のA10セルに4月-3月までの支出合計が    記入されている。   (2)別シートに縦罫4月-3月、横罫支出合計とした表を作成。   この表に月ごとの支出合計が自動的に反映されるように   したいのですが、今はセル一つずつに"=シート1のセルA10"を   入力しています。   この方法以外に便利な方法があったら教えてください。   説明下手で申し訳ございませんが、宜しくお願い致します。

  • エクセルでシート1をシート2にコピーしたら行が違う

    エクセルの勉強中です。かんたんな家計簿を作成し1月分ができました。(添付)そこで、2月分以降のブランクシートを作成しようとしています。 1月分のシートで全セル選択―コピー―シート2をクリック―全セル選択―貼り付け 以上でシート2にコピーされたのですが、行の高さが、まちまちです。(正しい高さと狭い高さが混在しています)※全セル選択は左上のシート全部で行っています) どうしてこんなことになるのか解りません。ご指導をお願いいたします。

  • 異なるシートからの集計と転記について

    収入明細書と、支出明細書があります。 それぞれ書式が違います。 それぞれの明細書には日付、摘要、単価、個数、金額等を打ち込みますが、収入と、支出の明細書では若干項目や、セルなどの位置が違います。 収入、支出の明細書は取引がある場合は、1日1枚の提出なので日ごとに1シート作成していかないといけないかなと思っています。 この2つの明細書の内訳内容をもう1つの収支報告書に転記し、 日付、摘要、金額等を集計し、入出金の流れや、現金残高などを把握します。 漠然とした内容でお答え頂くにもわかりにくいのではないかと思います。ごめんなさい。 ただ、別々1日1シートで、入出金の明細の書式が違うのでどうすればいいのか全然思い浮かばず、どうすべきなのかをお知恵をいただけたらと思っています。 ・私が考えたのは、それぞれのシートを新たな1シートに必要項目のみとばす。(収入と支出でセルの位置や項目が違うのでうまくとばせないのが問題) ・上記のシートからさらに新たなシートに収支報告書用に整列させる。(収支明細書で使用しなかった行が空欄でとんでくるので邪魔になる) ・上記のシートを収支報告書にとばす。 とまでは考えたのですが、問題が山積みで… きっともっとよい方法があるのではと思っています。 私はエクセル初心者ではありませんが、独学ですので本当の意味での理解が出来ていないと思います。 わかりやすく教えて頂けたらうれしいです。 また、マクロはまったくわかりません。 少しずつ勉強していきたいと思っていますが、出来れば関数等で作成できたらと思っています。 どうかよろしくお願い致します。

  • EXCELの変数を使用したシート削除マクロについて

    ご教示お願いします。。。 シートAのセルA1に”1111”と入力します。 シート追加マクロを作成し、1111というシートを追加することまではできましたが、 今度はシート削除マクロを作成し、同じく、”1111”のシートを削除しようと思います。 セルA1は都度変わるので、変数を指定し、その変数を使用して削除マクロを作成。 <既に1111シートはあるものと仮定します。> X = Range("A1") '---(1)XにA1セルに入力された数値をセット(1111がセットされる) Application.DisplayAlerts = False '---(2)(削除)確認メッセージをOFF Worksheets(X).Select        '---(3)ワークシートX(X=1111)を選択 ActiveSheet.Delete        '---(4)選択したワークシートを削除 Application.DisplayAlerts = True '---(5)(削除)確認メッセージをONに戻す。 Worksheets("Sheet1").Select    '---(6)ワークシートSheet1を選択して終わり。 上記のマクロを作成し実行すると、(3)で【実行時エラー’9’:インデックスが有効範囲にありません。】 のエラーメッセージがでます。 変数を使用せずに、直接[Worksheets("1111").Select]を明記すると問題なく通ります。 意味が分からず・・・。 変数の指定方法に間違いがあるのでしょうか? お詳しい方がいらっしゃいましたら、ご教示の程よろしくお願いします。。。

  • マクロで可視セルのみの削除

    A行に数字を入れ、B行にA行同列セルの数字に対して 数値を返す数式を入れています。 B行は非表示にしています。 (C・D行、E・F行・・・とも同じ処理) 数字を入力する範囲(A、C、E・・・)を選択し、 入力されている数字を消去するようマクロを組みました。 (範囲選択→ツールの編集→ジャンプ→可視セルを選択後、Delete) これはうまく作動します。 が、数式が壊れるのを防ぐ為、念には念を・・・と、 入力範囲部分はセルの書式設定で保護ロックを外し、 シートを保護しました。 そうすると、保護されているからだめ!と エラーが出て、マクロが作動しません。 (可視セル選択部分にデバッグがでます。) ・非表示のセルがある ・一部を除きシートを保護している 状態で、マクロで可視セルのみ削除することは不可能なんでしょうか? 宜しくお願いします。

  • Excel でシートをコピーしたいが、余分なデータまでコピーされてしまう。

    エクセル初心者です。「Excel2003」と「Excel2000」を使っています。主に2003を使っています。 エクセルで出納帳を使っています。摘要欄には収入や支出の項目がテキストで入っています。収入や支出の欄には関数が入っていて、収入金額や支出金額を入力すると残高か計算されるというシンプルなものです。 このシート(シート1)を同じブックの別のシート(シート2)にコピーしたいのです。しかし必要なのは関数の入った、いわば数値を入力する前の白紙のシートです。ところがコピーして出来たシート2の範囲を選択してDelキーを押すと、テキストや値ばかりか関数まですべて消えてしまいました。そこでシート1の表全体を選択してコピーシート2に「形式を選択して貼り付けー数式」でコピーしても他のテキストや値のようなものまですべてコピーされてしまいます。 シート1の関数のみの入った白紙のシート2を作るにはどのようにすればよいのでしょうか。初歩的なモノだと思うのですが、困っています。よろしくお願いします

  • Excelで入力用シートのデータを集計用シートに保存するには

    Excelでできるかわからないのですが教えてください。 一つのシートに日付と記入項目10項目(数値)を入力する シートを作成しその作成したシートの日付を基準に 別に作った集計用シートにデータを写し保存することは できるでしょうか? 入力シートは入力しては消して次の日にまた新たなデータを入力してと 入力するためだけの専用シートにしたいです。 また集計シートは各日にち毎のデータを集計するシートにしたいと 思っています。 いろいろ調べたのですが良くわからないので アドバイスいただけませんでしょうか。 よろしくお願いいたします。

  • エクセルでの家計簿作成

    エクセルを用いて家計簿のフォーマットを作成しているのですが、 今作成できているのが、 例えば4月1日の場合、 A1に月日、 B1にその日の支出金額、 C1に何に支出したのか、 D1に収支金額、 E1に何による収支か、 F1にその日の収支-支出の金額、 G1に月単位で見たその日の残金額(4月のはじまりが\10000の場合、残り何円残っているか。) です。 ただ、この場合、一日の支出や収支の内容が多数にわたるとき、 自分ですべての支出金合計を計算してB1にその合計金額を入力し、 C1に項目をコンマ区切りで書いていくことになり(食費,文房具,交通費などと)、非常に面倒だし、内訳が把握できにくくなります。 そこで、作成したいのが、 なかなか言葉で説明するのは難しいのですが、 イメージとしてはB1とC1、D1とE1の中に複数のセルを作成するという感じです。 見かけは一日一行しかないように思えるけども、B1セルをスクロールでき、それに伴ってC1の内容も変わる。ってな具合にしたいのです。 例を見てください (スペースの入力が有効にならないので、セルがあってなくて見にくいですが、わかるでしょうか) 【見かけ】 4月1日| \200 | 交通費 | \500 | 友達 | \2000 | \500 | -\1500 | 4月2日|・・・・・・ 【実際のデータ】 4月1日| \200 | 交通費 | \500 | 友達 | \2000 | \500 | -\1500 | ___________| \600 | 食費 | \0 | - | ___________| \700 | 文房具 | \0 | - | ___________| \500 | USB | \0 | - | 4月2日|・・・・ 【見かけ上でB1セルを  一回下にスクロールしたときの表示】 4月1日| \600 | 食費 | \500 | 友達 | \2000 | \500 | -\1500 | 4月2日|・・・・・・ できますでしょうか?? よろしくお願いします。

専門家に質問してみよう