Excelマクロで山田太郎さんに関するシートを自動的に削除する方法

このQ&Aのポイント
  • エクセルのマクロを使って【シート1】の山田太郎を削除すると、【シート2】の2~4行に入っている山田太郎さんに関するシートも自動的に削除する方法について教えてください。
  • 【シート1】には山田太郎や山田花子などの名簿がありますが、【シート2】では特定の名前のデータを参照しています。そこで、【シート1】から山田太郎を削除した場合、それに関連する【シート2】のデータも削除したいです。
  • 具体的には、【シート1】の山田太郎(1行すべて)を削除したときに、【シート2】の2~4行に入っている山田太郎さんに関するシートを自動的に削除する方法を教えてください。
回答を見る
  • ベストアンサー

エクセル:マクロでこんなことはできますか?

【シート1】に名簿があります。 1 山田太郎 | ○○市○○町 | 電話 ・・・・ 2 山田花子 | ○△市  |・・・ といった一般的なものです。 【シート2】は、データ入力用としています。 A2~A4の3つを結合し、シート1から”山田太郎”を参照(INDIRECT関数使用) A5~A7の3つを結合し、同様に山田花子を参照 B2,B3.B4、C2,C3,C4は必要データを入力しています。 ★やりたいこと 【シート1】の山田太郎(1行すべて)を削除したときに、 【シート2】の2~4行に入っている山田太郎さんに関するシートを自動的に削除したい。 以上です、よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。Wendy02です。 今、もう一度読み直して、ちょっと試してみましたが、ワークシートイベントではうまくいきません。既存のコマンドボタンに、全てイベント付けをつけるのは、かなり手間なのです。今は、時間が取れませんので、もし、我こそはと思う方にお任せしたいと思います。 これをボタンに取り付けてください。 Sub TestSample() Dim SearchWord As String Dim myFirstAddress As String Dim myUnionRange As Range Dim c As Range  SearchWord = ActiveSheet.Name & "!" & ActiveCell.Address(0, 0)  Set c = Worksheets("Sheet2").Cells.Find _  (What:=SearchWord, _  LookIn:=xlFormulas, _  LookAt:=xlPart, _  SearchOrder:=xlByColumns, _  SearchDirection:=xlNext)     If Not c Is Nothing Then     Do     If myUnionRange Is Nothing Then      Set myUnionRange = c     Else      Set myUnionRange = Union(myUnionRange, c)     End If      Set c = Worksheets("Sheet2").Cells.FindNext(c)     Loop Until c Is Nothing    End If     If Not myUnionRange Is Nothing Then       myUnionRange.MergeCells = False       myUnionRange.EntireRow.Delete     End If     ActiveCell.EntireRow.Delete End Sub

yastaro
質問者

お礼

Wendy02さん、ありがとうございます。私のわかりにくい質問に真摯に取り組んでいただいたことに感激しています。過去の私の投稿まで見ていただいて、なんとかご回答くださろうとしていただいたことに心から感謝申し上げます。実は、初心者の私に上記マクロの利用にまで能力が達しませんでした。ただ感謝の気持ちだけでもお伝えしたく存じます。ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >【シート2】の2~4行に入っている山田太郎さんに関するシートを自動的に削除したい。 確かに、おっしゃることは出来ます。しかし、No.1763213で、「エクセルのマクロで、シートを削除するとき・・・」となっていますから、その延長上にあるとはしても、データを1つ削除して、それに連動して、シート削除というのは、かなり無茶な気がします。せいぜい、行の削除程度なら分りますが。 INDIRECT関数を使用と書いているなら、そのデータは、同時に参照場所のデータを失っているから、データが消えているはずですね。おっしゃっている「シート2」側の部分が明確にはありませんね。 それに、なぜ、INDIRECT関数を使っているか、というようなところまで発展してしまいます。被参照セルを失ったときに、エラーにならないようにしているのではないかと思いますが、式の入っている側を消したら、無意味のような気がします。 どうも、見えない部分が多すぎて、次のステップのイメージがわきません。

yastaro
質問者

補足

ありがとうございます。実は、「行の削除」と書きたいところを「シートの削除」と書き間違えました。申し訳ありません。要は、シート2の2~4行を自動削除できるかということです。

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.1

あなたのマクロスキルはどれぐらいですか? 求める回答のレベルはどの程度のものですか? イベントプロシージャでできないことはないとは思いますが、ボタンでも作っておいて、マクロを割り当てといた方が、簡単だと思います。

yastaro
質問者

補足

ありがとうございます。マクロ初心者です。それと実は、「シートの削除をしたい」ではなくて「2~4行の行の自動削除をしたい」です。あせっていて書き間違えました。申し訳ありません。

関連するQ&A

  • エクセルの貼り付け方

    山田太郎 18才 172cm 中村花子 20才 160cm のように例えば3行ごとにひとまとめのデータをクリップボードにコピーしてあるものを    A   B   C 1 山田太郎 18才 172cm 2 中村花子 20才 160cm のようなデータになるよう貼り付けたいのですが、簡単にする方法はないものでしょうか。(これは例で、ひとまとめが3行とは限りません)  また、逆にこのようなエクセルシートから最初のようにA1 B1 C1 A2 B2 B3の順に各データが改行で連続しているものに戻す方法も知りたいのです。

  • 結合されたセルのオートフィルについて質問です。(長文です)

    結合されたセルのオートフィルについて質問です。(長文です) いつもお世話になります。 Excel2000を利用して,住所一覧表を作成しています。 【sheet1】には,データ入力用として手入力していき, 【sheet2】には,sheet1のデータが反映されるように数式を入れ, 一覧表として表示されるように利用します。 例えば,【sheet1】ですが, 1行目には項目を, A1「番号」 B1「氏」 C1「名」 D1「〒」 E1「住所」 F1「ビル名」 という風に入力し, 2行目からはデータとして A2「1」 B2「山田」 C2「太郎」 D2「123-4567」 E2「*市*町」 F2「山田ビル」 A3「2」 B3「山本」 C3「花子」 D3「987-6543」 E3「*群*町」 F3「山本ビル」 A4 下に続く-- という風に,1行ずつ1つのセルごとに入力していきます。 そして【sheet2】には 「氏名」で1つのセルに,また「〒住所ビル名」として1つのセルに表示されるようにします。 【sheet2】例↓ A1「番号」 B1「氏名」 C1「〒住所ビル名」 D1「備考」 A234「1」 B234「山田太郎」 C234「123-4567**市**町山田ビル」 D234「備考」 A567「2」 B567「山本花子」 C567「987-6543**群**町山本ビル」 D567「備考」 となります。 ※【sheet2】の2行目以降は,3行ごとにセルを結合させます! ※表にするとこんな風になります↓(わかりにくいかも知れませんが...)     A |  B    |   C     |  D -----------------------------------------------------  1  番号 |  氏名   |   住所    |  備考 ----------------------------------------------------- 2     |         | 〒123-4567   | 3   1  | 山田太郎  |   **市**町 |  備考       4     |         |    山田ビル | ----------------------------------------------------- と表示されるようにしました。 まず氏名のセルにおいての式としては, =IF(sheet1!B2="","",CONCATENATE(sheet1!B2,CHAR(10),sheet1!C2)) の式を【sheet2】のB2のセルに入れました。 すると,無事に山田太郎君が統合されて出てきてくれました! ただ,この先がわかりません。。 この式を下の行にも反映させようとオートフィル機能を使って, 【sheet2】のB234のセルを下にドラッグしていくと, 式は出てきてくれたのですがセルが結合されている為 【sheet2】のB567には =IF(sheet1!B5="","",CONCATENATE(sheet1!B5,CHAR(10),sheet1!C5)) 【sheet2】のB8910には =IF(sheet1!B8="","",CONCATENATE(sheet1!B8,CHAR(10),sheet1!C8)) と,当然ではあるのですが3行ごとの式としてでてしまいます。 上述した通り, 【sheet1】には1行に1人という入力方法なので, 上の式だと,【sheet2】のBに表示されない人が出てきてしまいます。 山本花子さんが出てきてくれません(泣) 長くなりましたが,ここで質問です。 B2の式の =IF(sheet1!B2="","",CONCATENATE(sheet1!B2,CHAR(10),sheet1!C2))を オートフィルで B5 =IF(sheet1!B3="","",CONCATENATE(sheet1!B3,CHAR(10),sheet1!C3)) B8 =IF(sheet1!B4="","",CONCATENATE(sheet1!B4,CHAR(10),sheet1!C4)) B11 =IF(sheet1!B5="","",CONCATENATE(sheet1!B5,CHAR(10),sheet1!C5)) と1つづつあげていく事はできるでしょうか? 手入力が一番早いのでしょうか? 又,他に何かいい方法はありますでしょうか? 長文になってしまい申し訳ございません;; 又,初心者の為わかり辛い箇所があるかもしれません。 都度補足致しますので, おわかりになる方がいらっしゃいましたら,宜しくお願い致します

  • Excel(マクロ?VBA?)で最大日付の行を抽出

    Excelのデータ抽出で困っております。 下記のようなデータがあり、各IDの最大日付の行を抽出しようとしていますが、抽出方法がわからず、困っています。  氏名  ID   日付   山田太郎 10 2012/12/01 山田太郎 10 2013/08/01 山田太郎 10 2014/12/01 山田太郎 10 2015/08/01 山田花子 20 2012/12/01 山田花子 20 2013/08/01 山田花子 20 2013/12/01 この際に、 山田太郎 10 2015/08/01 山田花子 20 2013/12/01 という2つの行を抽出したいですが、抽出方法がわかりません。 関数を使ってやろうとも思いましたが、関数をどれを使えばいいかわかりません。 別シートに抽出でも全く問題ありませんので、恐れ入りますが、抽出方法を教えてください。 よろしくお願いいたします。

  • エクセルの抽出結果表示について。

    こんばんは。 エクセルのピポットテーブルを利用し、集計表を作成しています。 そこで質問なのですが、シート(1)には、   A      B     C    D 1 伝票番号 お客様名 品名  数量 2 123   山田太郎 りんご 10 3 123   山田太郎 みかん 12  4 123   山田太郎 レモン  9 5 125   山田花子 りんご 11 6 125   山田花子 メロン  6 7 139   川田昭子 なす   5 8 139   川田昭子 トマト  6       ・       ・        ・ というような、データが入力されているとします。(日々入力されていく為、何千行になることも・・・) シート(2)には、このシート(1)より伝票番号からデータを呼び出し、順番に下の行に表示を加えいきたいのです。 そして、このシート(2)のデータを基にピポットテーブルを作成し、集計表を完成させたいのです。 いまは、シート(2)のような内容を2度手間のように、入力し集計表を作成しています。 ただシート(1)のような全体分のデータはあるので、利用したいし、手間を省きたいのです。 マクロとかになるのですかね? (あまり分からないけれど・・・) VLOOKUP関数を利用しようとしたのですが、例のように、同じ伝票番号に対して、複数行のデータがあるため、1行しか表示できないのです。 なにか、いい方法はありますか?

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • エクセルでこんな事ってできますか?

    A 名前    B 郵便番号 C 住所   ・   ・ 山田 太郎   999-9999 東京都渋谷区1-1 山田 花子   999-9999 東京都渋谷区1-1   ・   ・   ・ というようなデータがあります。 苗字が同じで住所も同じ人の行を新しい行に取り出す事ってできますか?

  • エクセルについて

    エクセルについて、 山田太郎  150 154 155 156 佐藤花子  151 153 158 高橋二郎  152 159 162 163 164 165    : (それぞれ別のセルに入力) というようなシート(1)の横書きのデータをもとにして、別のシート(2)の 150 151 152 153 154 : という縦書きの数列の横に、シート(1)の対応する名前 150 山田太郎 151 佐藤花子  152 高橋二郎 153 佐藤花子 154 山田太郎  : を表示させる方法をご教授願います。 実際のデータはシート(1)、シート(2)ともに膨大なデータのため、手作業の処理は 困難な状況です。 よろしくお願いいたします。m(_ _)m

  • Excel マクロ 特定の列のみカット&ペースト

    Excel マクロ初心者です。IF文を使用しているのですが上手くいきません。 A列が「次郎」の時、1つ上の行のB~E列をカットし次郎の行へペースト、B列が空白の行削除・A列に山田を追加する。 例 A列|B列|C列|D列|E列 花子|a|あ|か|g 太郎|c|う|き|g 次郎| | た | | 三郎|e|お|く|g マクロ後 A列|B列|C列|D列|E列 山田花子|a|あ|か|g 山田次郎|c|う|き|g 山田三郎|e|お|く|g 色々と調べて試してみたのですが知識不足の為、上手くいかず・・・全文載せていただけると、とても助かります。

  • エクセルについて

    エクセルで住所録を作っているのですが、名前とフリガナを同じセルに入力していました。フリガナだけを横のセルに移動することは可能でしょうか      A             B 1山田 太郎 ヤマダ タロウ  2山田 花子 ヤマダ ハナコ    A | B 1山田 太郎 | ヤマダ 太郎 2山田 花子 | ヤマダ ハナコ 宜しくお願いします。

  • エクセルで複数条件を満たす値を表示する方法

     質問初めてで失礼しますが、よろしくお願いします。 エクセルにおいて  下記のようにシート「犬」に基礎となるデータがあります。     A   B  C  D  E   ・・・ 1        花子 太郎 次郎 2 1994 6月 200 100 320  3 1994 7月 700 300 500 4 1995 6月 800 500 100 5 1995 9月 900 800 300 6 1996 6月 500 200 200 ・ ・ ・  これを別のシート「猫」に花子の情報のみ一覧表示したいのですが、B3、B4・・・C3、C4・・・にどのような数式をいれればよいでしょうか?  なお、このようにして、太郎や次郎もシート毎に一覧表示させる予定です。    A B C D E   ・・・ 1 花子 2     6月 7月 8月 9月 3 1994  4 1995  5 1996  6 1997  7 1998  ・ ・ ・  よろしくお願いします。  

専門家に質問してみよう