• ベストアンサー

エクセルで列削除

エクセルで列の自動削除をしたいと考えています。 たとえば、100列の表があるとします。その表を、 ある特定のセルに入力した数字(0<N<100)の数だけの表(列)をつくりたいと考えています。 (N+1)列目から100列目までを削除すればいいのですが、 何かいいマクロはありますでしょうか? OFFSET関数を使おうと思っていたのですが、 引数にどう記述していいものか・・・ OFFSETを使わなくても結構です。なにかいい記述があったら教えてください。 お願いします。

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

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

こんにちは。 Offset だと、Rangeオブジェクトで、二点間を選択することになりますから、 ActiveSheet.Range(Columns(N + 1), Columns(N).Offset(, 100 - N)).Delete 100列目を固定すれば、以下のようになります。 ActiveSheet.Range(Columns(N + 1), Columns(100)).Delete になります。 Resize を使うと、 ActiveSheet.Columns(N + 1).Resize(, 100 - N).Delete になります。 いろんな方法を試してみてください。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>、100列の表があるとします 分かります >特定のセルに入力した数字 特定のセルではなく、そのセルの値を調べて条件に合うか初めて分かるのでは? あるいは、数字が入力してないセルもあるということ? >ある特定のセルに入力した数字(0<N<100)の数だけの表(列)をつくりたいと 数字の入ったセルのうち0-100までの値のセルの数値を、拾って その後どう並べるのですか。右へつめていくということ。 元の表は形がなくなってよいということ? >(N+1)列目から100列目までを削除すればいいのですが 上記のような理解だとなぜそうなるか分からない。 Nはセルの値を示しているのではないの? とたんに列数のためにNを使ったように見えるが、私の誤解? VBAなら Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") d = Range("a65536").End(xlUp).Row MsgBox d For i = 1 To d k = 1 For j = 1 To 100 If sh1.Cells(i, j) < 100 And sh1.Cells(i, j) > 0 Then sh2.Cells(i, k) = sh1.Cells(i, j) k = k + 1 End If Next j Next i End Sub こんなもんでしょうか。

回答No.1

N+1列目から100列目をごっそり削除。 罫線すら消えます。 Dim ws As Worksheet Set ws = ThisWorkbook.ActiveSheet ws.Range(Cells(, N + 1), Cells(100)).Columns.EntireColumn.Delete

関連するQ&A

  • エクセルの関数です。列に数字が並んでいる表。

    エクセルの関数です。列に数字が並んでいる表。 ある列内のセルにある数字を指定し、その数字から下一列にある数字をすべて選択したような状態でその中の数字の平均値を求める方法はあるのでしょうか? 数値 3210 ※例えば 3211  3212と3215とあるセルに入力したら自動的に3212~3215の平均値の結果が返るような  3333  関数です。 3212 3213 3214 3215 3217 3218 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235

  • excelの列の削除

    送られてくるエクセルの表のうち必要な列は10%ぐらいしかありません。印刷しなければならない表なので手作業で列の削除を行っているのですが、何か他に良い方法はありませんでしょうか。マクロはあまり詳しくありません。

  • エクセル 数字の入っている列をピックアップしたい

    エクセルで表を作っており、以下のように各行ばらばらに 違う列に数字が入っています。 また、重複して違う列に数字が入っていることはありません。 この列の中から数字が入っているものを (入っていないセルは空か0が入っています) ピックアップした列を作りたいのですが、 適切な関数はありますでしょうか? 1  2   3    4     5

  • エクセルで、該当する文字列がある行のみを残す方法

    はじめまして、初めての質問になります。 題名の通り、現在エクセルで関数を使い該当する文字列がある行のみを残す関数を探しているのですが、実際に登録してみるとうまく動くものが無かったので質問しました。 画像がうまく表示されるか不安なので記述すると セルのA2から下に数字があり、その数字に対していくつかの該当した番号がある行のみを 残す関数を探しております。 資材コード    品名 301140    パネル 301240    ソケット 360940 この様な表になります。 この中で、例えば 301140 360940 この2つ該当する数字がある行を残すマクロを探しております。 ぜひ教えていただければ幸いです。

  • エクセル2003で可能でしょうか?

    エクセル2003で、行を削除しても自動で連番をふりなおせる関数ROWは解るんですが、行ごと削除するときはROWは有効ですが、たとえばこんなときはどうすればよいでしょうか? A列に連番がふってある表があったとして、A1~A5セルに1~5の連番をふったときに、A3セルの連番を消し、”削除”という文字列を入力した場合、A1セル=1、A2セル=2、A3セル=”削除”、A4セル=3、A5セル=4 というように、”削除”と文字列を記入したセルを飛ばし連番が自動的にふれるという関数orマクロはないでしょうか?今は、いちいち手打ちで修正しているのですが・・。ROWとIFを使ってできないか?と考えましたがどうしても解りません。みなさんのお知恵をかしてください!!   

  • エクセルで1行目が空白の場合、列を削除したい

    こんにちは!質問をお願いします。 エクセルで表を作成していますが、1行目が空白のセルがある場合に、その列を削除したいのですが、VBAでどのようなコードにすればよいでしょうか? ※上記のD列を削除し左詰めにしたい。(空白セルはAからBBまでの間で、特定の位置以降で発生します。) ※ちなみに1行目には、=N というようにほかのセルを参照し、文字の入力があれば表示するようにしています。 初心者につき、うまく説明できていないかもしれませんが、よろしくお願いいたします。

  • エクセル ある文字列を入れるとある文字列を返す

    エクセルでの関数、ど素人です。一応自分で調べたのですが、無理なので質問させていただきます。よろしくお願いいたします。 エクセルで、時刻ですが文字列として1745~2345までを手入力します(1745,とか2000とか2330とか。。。。。) 入れた文字列によって、すぐ横のセルに1745、1800、1815であれば8.00、1830からは0.25刻みで8.25、1845であれば8.50、1900であれば8.75。。。。2330であれば13.25、2345であれば13.50と言ったように、入力した文字列に対しある特定の文字列を自動的に入れたいのですが、どのような関数を使えばよろしいのでしょうか。 私が行おうとしたのは、別シートに文字列一覧を作り、if(特定のセル(手入力するセル)=別シートの1745~2345まで、横のセル=別シートの8.00、8.00、8.00~13.50まで)や、sumif、lookupを使ってみましたが撃沈です。 どなたか教えていただきたく、お願いいたします。

  • エクセル関数について

    こんばんは。 エクセル関数に関して、質問させてください。 今現在、エクセルであるデータを作っているのですが、 そこに例えばB2セルに東京、C2セルに3という数字が、またB3セルに大阪、C3セルは空欄になっているとします。 そこで、C列に数字が入っている場合のみ、B列の都道府県名と、それに対応するC列の数字を他のシート(同じシートでも可)に書き出すようにしたいのですが、そのような関数はあるのでしょうか。 最終的には、マクロを組んで、自動化させたいのですが… 長々と申し訳ありませんが、よろしくお願いいたします。

  • エクセル色付

    エクセルの表を作成して例として B列内の特定数字にセルに色を自動で付ける方法有れば 教えて下さい。

  • エクセルの設定か、関数かマクロで出来るでしょうか?

    エクセルの関数やマクロを勉強中です。 特定の列の、セル内の文字や数字を 一字でも変更した場合 そのセルだけ、背景色がグレーになる・・・ そんな事が、できるでしょうか? ご回答を お待ちしております! よろしくお願いします。