• ベストアンサー

エクセル データのある最終列~最終列から数えて4つ目までの列を削除する

エクセル データのある最終列~最終列から数えて4つ目までの列を削除するマクロ ネットで調べましたところActiveSheet.UsedRange.Columns.SelectでA~最終列までは選択できました。 これをタイトルの様に4列目までを選択し削除するにはどうすればよろしいのでしょうか? どなたかご教授の方よろしくお願い致します。 使用環境:Windows7x64 エクセル 2007

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

似たようなものですが。。。 (確認のためDeleteではなくSelect)   With ActiveSheet.UsedRange   .Columns(.Columns.Count - 3).Resize(, 4).Select End With   説明は不要とは思いますが。。。 例えば、選択範囲がA~J列(1~10列)だったとすると   .Columns.Count = 10 .Columns(.Columns.Count - 3) = .Columns(7) = 7列目 .Resize(,4) = 7列目から4列分サイズを拡げる(7~10列目となる)     以上です。

rose_web
質問者

お礼

ご回答有り難うございます! 上記のマクロで間違いなく作動致しました! 今回はこちらをご利用させて頂きたいと思います! 有り難うございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

例えば次のようなことでもよいでしょう。 ActiveSheet.UsedRange.Select n = Selection.Columns.Count Range(Cells(1, n - 3), Cells(1, n)).EntireColumn.Delete

rose_web
質問者

お礼

ご回答有り難うございます! 上記マクロで問題なく削除できました。 今回は1つのマクロで多数の変数使用しているため、 変数を作りたくありませんでしたが、 とてもわかりやすいマクロで勉強になりました! 有り難うございました!

全文を見る
すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

With ActiveSheet.UsedRange.Columns .Resize(, 4).Offset(, .Count - 4 + 1).Delete End With

rose_web
質問者

お礼

ご回答有り難うございます! お教え頂いたマクロでは最終行を含み左3つしか削除できませんでした。 数字を変更すれば問題御座いませんでした。 この度は有り難うございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA 右端列の削除

    このたび初めて質問させていただきます。 周囲にVBAを扱うひとがいないため、初歩的(たぶん?)な質問をさせてください。 以下のようなマクロを記録したのですが、一部を編集したいと考えております。 Columns("F:H").Select Selection.Insert Shift:=xlToRight Columns("A:B").Select Selection.Cut Range("F1").Select ActiveSheet.Paste Columns("J:J").Select→J列固定ではなく右端の列と設定したい。 Selection.Cut Range("H1").Select ActiveSheet.Paste Columns("A:B").Select Selection.Delete Shift:=xlToLeft Columns("J:J").SelectをJ列固定ではなく右端の列を1列設定し切り取りがしたいのです。Range("A2").End(xlToRight).Select ActiveCell.Offset(-1,0).End(xlDown).Select と書き換えてみたのですが、うまく作動しませんでした。 どなたか教えていただけませんでしょうか?

  • UsedRange って、「空白セル」までも参照するのですか?

    Windows XP Home Edition Office XP Personal 2002 Excel 2002 1行~200行までのみに値があります。他は空白です。 UsedRange は、 何らかの編集が行われているセル範囲を選択するということですが、 確認のために、 3、 4 にして実行しますと、 3はColumns("G:H") を全部選択してしまいます。 書式を変更した「空白セル」までも、UsedRangeとなってしまうのでしょうか。 私は、3も "G1:H200" を選択すると思っていたのですが、 確認のしかたが間違っておりますでしょうか? よろしくお願い致します。   '1   With ActiveSheet.UsedRange.Columns("G:H")   '2   With ActiveSheet.Range("G1:H200")   '3    ActiveSheet.UsedRange.Columns("G:H").Select   '4    ActiveSheet.Range("G1:H200").Select

  • 列の削除を早くしたい

    列の削除を自動化する次のマクロをおしえていただきました。 ずっと使っていましたが、異常に処理が遅いのです。 列の数は2370列以上あり、変動します。 行数は1から33行までで、固定しています。 この行数の固定を加味して、もっと早く処理したいのですが、どうしたらよろしいでしょうか。 Sub 空白列の削除() Dim UsedCell As Range Dim Max_column, columnCount As Integer '使用しているセルの範囲を取得します Set UsedCell = ActiveSheet.UsedRange '最大の行番号を取得します Max_column = UsedCell.Cells(UsedCell.Count).Column For columnCount = Max_column To 1 Step -1 'Worksheet関数のCountAを使ってデータの個数をカウント If Application.WorksheetFunction.CountA(Columns(columnCount)) = 0 Then '行の削除 Columns(columnCount).Delete End If Next End Sub

  • エクセルVBAでデータ最終行取得方法

    エクセルVBAでデータ最終行取得方法で良い方法を教えてください。 データの行数、列数は不定。 最多のデータ行の列も不定。 この条件で、データ最終行を取得するにはどうすればよいでしょうか? lastrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row では、A列の最終行に限定されます。 lastrow = ActiveSheet.Cells(1, "A").SpecialCells(xlLastCell).Row では、列の限定はありませんが、一旦データ入力後、削除した部分まで入ってしまいます。 lastrow = ActiveSheet.UsedRange.Rows.Count では、データ入力後、削除した部分まで入ってしまい、かつ、1行目など上部が空白の場合、不正確になります。

  • 列を2度コピーするマクロ

    B列をC列にコピーした後、A列をB列にコピーするという2段階コピーの下記マクロを、「新しいマクロの記録」を使って作りました。 しかし下記マクロは 列選択時の青反転が実行時に残って、使用感がいまひとつです。 「新しいマクロの記録」ではなく、もっとスマートなマクロはできないでしょうか? なお、列選択ではなく必要なセル数だけ選択すれば青反転はなくなると思いますが、行数が確定していないので列選択にしたいと思っています。 ついでに下記マクロについて質問です。 11行目はなぜ5行目とは違うのでしょうか?.PasteとPasteSpecial Pasteとの違いを教えていただければ幸いです。 Sub Macro1() Columns("B:B").Select Selection.Copy Columns("C:C").Select ActiveSheet.Paste Columns("A:A").Select Application.CutCopyMode = False Selection.Copy Columns("B:B").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A2").Select Application.CutCopyMode = False ActiveWorkbook.Save End Sub

  • 列全体をコピーして別の列に貼り付けたい

    列全体をコピーして別の列に貼り付けたいのですが、 「そのコマンドは複数の選択範囲に対して実行できません。」 とエラーになってしまいます。 コードは以下のとおりです。 Worksheets("aaa").Columns(1).Select Selection.Copy Worksheets("aaa").Columns(3).Select ActiveSheet.Paste よろしくお願いします。

  • VBAによる列削除について教えて下さい

    VBA初心者です。いろいろと調べて見ましたが、「C列からアクティブセルの前列までを削除」する方法が分かりません。下の記述は「C列からX列」としていますが、X→「アクティブセルの前列」と読み替えるにはどうすればよろしいでしょうか。よろしくご指導下さい。 Sub 列削除() Columns("C:X").Select Selection.Delete Shift:=xlToLeft End Sub

  • エクセルのマクロでデータの最終行の特定の列を選択

    エクセルのマクロでデータの最終行の特定の列を選択するにはどういう構文を書けばいいですか

  • エクセル 特定文字列のある列の削除と保存

    こんにちは いつもお世話になっています。 エクセル2010です 1行目に文字列が入力されています。 (1)1行目に特定文字列を含む列を削除するマクロ。 (2)1行目に特定文字列を含む列だけを残して、他はすべて削除するマクロ を教えてください。 2つ質問するのが不適当ならどちらか一方でも構いません。 指定したい文字列は複数ありますので「文字列A、文字列B、・・・」等で追記できる形だと助かります。フォーマットが決まっているので指定文字列を頻繁に変えることはありません。 特定行を削除するマクロはネット上でヒットしたんですが、列は見つかりませんでした。 マクロ記録で、文字列検索、列削除をしましたが、連携のさせ方がわかりません。 よろしくお願いします。 Sub Macro1() ' ' Macro1 Macro ' ' Rows("1:1").Select Selection.Find(What:="あ", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False).Activate Selection.FindNext(After:=ActiveCell).Activate Columns("A:A").Select Selection.Delete Shift:=xlToLeft End Sub

  • EXCEL マクロ 列の削除に時間がかかる

    列はY列まで、行はおおよそ400~500行くらいのエクセルの表があります。 マクロで飛び飛びに行の削除を記録したのですが、処理に時間がかかっています。 もっとスムーズに早くする方法はありますか? ご教授おねがいします。 Range( _ "A:D,H:H,I:J,K:K,M:N,P:U,W:W,X:Y"). _ Select Selection.Delete Shift:=xlToLeft

専門家に質問してみよう