[[20040630135139]] 『マクロによる複数シート内の一括列削除』(bitよしお) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロによる複数シート内の一括列削除』(bitよしお)

その都度入力した設定値によって、複数シートの複数列を削除したいと思います。

各シートは全て同じ様式の統計であり、A列から順に1月から12月までの数量が記入されています。
 (A列=1月、B列=2月、C列=3月、・・・L列=12月)

シート数は全24枚で、それぞれ地域別に分かれています。

で、25枚目のシートを作り、そのシートのA1列に”1月”と入力した上で実行すると、全てのシートで1月以外の列が全て削除され、同じく”2月”と入力して実行すると、全てのシートで2月以外の列が全て削除されるマクロが必要なんですが、どういう構文になるでしょうか?

よろしくお願いします。


 こういう塩梅でせうか。
 Sheet25のA1に必要な月を入力して実行してみてくだはい。
 せやけど、せっかくのデータをなんでまた・・・
    ほな...(弥太郎)
 '--------------------
 Sub test()
    Dim i As Integer
    Dim data As String
    Dim maxrow As Long
    Dim keep_data

    If ActiveSheet.Name = "Sheet25" Then
        data = StrConv(Range("a1"), vbNarrow)
        If data Like "*[!0-9]*" And data Like "*月*" Then
            For i = 1 To 24
                With Worksheets("sheet" & i) 'シート名が変更されとる
                        'ばやいは with sheets(i)で
                    maxrow = .UsedRange.Rows.Count
                    keep_data = .Cells(2, Val(data)).Resize(maxrow)
                    .Range("a2:l" & maxrow).Clear
                    .Cells(2, Val(data)).Resize(maxrow) = keep_data
                End With
            Next i

        End If
    End If

End Sub


 本当ですよね・・・
 一度削除したら元に戻せないので、1月で消した場合には2月以降のデータがないので
 2月で実行した場合に何をしようとされてるのか・・・(少し気になります)
 (川野鮎太郎)


実際はもっと複雑なものですから、単純化して質問させてもらった次第です。
一度削除したら元に戻せないのは承知の上です。(^^)

弥太郎さん、さっそくの返信感謝です。
しかし、もう少し質問を「拡大」させて下さい。

まず、削除したい範囲は列全体です。("A:A","B:B",...)

次に、設定値と列名は一致しません。

実際はデータ上の「1月列」はG列にありますし、「月列」以外にも「総計列」やその他の項目が存在します。

なので希望としては、<Sheet25の設定値が"1月"だったら、各シートのA列とC列とF列を削除する>という様な形にしたいんです。

ネタの後出しにみたいになってすいません。M(__)M

(bitよしお)


 ちょっと(bitよしお)はん。
 ほんなら、なんでっか、最初の私のレスは只働きさせたっちゅうことでっか?
 あんさんも責任もってスレ立てたんでっしゃろから、その時点でどなたかのレスを頼り
 にご自分でマクロを組む覚悟がでけとった筈ですわなぁ。ちゃいまっか?(笑)
 ほんなら、やっぱし丸投げにせんと自分も汗かかにゃぁ、進歩はおまへんで。
    ほな...(弥太郎)

 こんばんは。
弥太郎さんのご意見もごもっとも。
(bitよしお)さんも
>ネタの後出しにみたいになってすいません。M(__)M
今後この点は気をつけましょう。お互い時間は貴重です。
 
さて、私が気がかりなのは、弥太郎さん、川野鮎太郎さん同様、
「なぜ削除?」
計算から除外したり、空白が目立つので表示しておきたくないとか
そういうことであると推測しますが、マクロで削除してしまうと
元に戻すことが出来ないのでオオゴトです。
回答者としてはこの辺の事情も説明があると回答の幅が広がります。
 
私はマクロも組みますが、標準の編集機能や関数で何とかならないか
とりあえず考えてみます。
削除ではなくて列の非表示という考え方であれば
「表示」「ユーザー設定のビュー」が利用できます。
・対象ワークシートをCtrl+シート見出しクリックなどで作業グループに設定し
 複数シート選択。
・「ユーザー設定のビュー」「追加」で全表示の状況を「標準」として登録します。
・続いて「1月」に非表示になる列を「表示しない」で非表示にして同じく、
 「ユーザー設定のビュー」「追加」で「1月」として登録します。
・「2月」「3月」・・・についても同様に非表示列の状況を追加していきます。
・目的の表示状況再現は「ユーザー設定のビュー」で「1月」などを選択「表示」。
 
以上の設定は全て対象シート全てを「作業グループ」に設定して行ってください。
どうしても削除、という場合は「へぇボタン」を3回ほど叩いていただいて、
「このような機能もある」ということを記憶の片隅にしまっておいていただければ
結構です。
 
そのうえで、マクロでの回答を望む場合はかなり事細かに列削除の具体的な
手順を書き込んでいただかないと、コードは組めません。
(単純な繰り返しではなさそうなので)
もし時間のある方がいらっしゃれば作成してくれるかもしれません。
長文失礼しました。
(KAMIYA)


弥太郎さん、ごめんなさい。

我ながら概念が整理できず、結果的に不誠実な態度だったかもしれません。

ご指摘のとおり、自分で汗かいて、基礎から勉強してみます。

KAMIYAさんもありがとうございました。参考にします。

(bitよしお)


 KAMIYAはん、毎度のフォローおおきに。

 bitよしおはん、私の申し上げとるんはご自分が現在躓いとるところを隠さずに
 スレを立ててくだはい、っちゅうことでっせぇ。
 どの程度やったら返答を貰えるかとか、あんまり難しい質問したら回答が無いんちゃう
 かとか、ほんな事はお考えにならんでよろしいんやで。
 最初から丸投げなら丸投げでも回答者との意見があえばちゃんとレスを貰えますさかい
 ナ。(わたしゃ過去に何度かありまス)
 それにもう一つ加えときますけど
 マクロが組めるから、あるいは関数に長けとるからっちゅうて、決して人間性が優れと
 る訳ではおまへんねんでぇ。勘違いせんときなはれやぁ。(笑)
      ほな、又躓いた時に(弥太郎)


 bitよしおさんはもう見ていらっしゃらないかもしれませんが、
 その素晴らしい技術もさることながら、
 いつも、弥太郎さんの心温まるコメントに涙してしまう、みかんです。
 横ですみません

 excelの学校で学べるのは、技術や機能だけではないんですね。
 私も、いつかそんな回答ができるように切磋琢磨したい思いです。

 (みかん)

 みかんさん、おおきに。
 でも!3本忘れとる。(笑)
     ほなら...(弥太郎)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.