• ベストアンサー

マクロで列削除をするには

基本的な質問ですいません。 マクロで列単位で削除する方法って Columns("B:B").Delete っていうのが基本だと思いますが、 他になんか活用的なソースってありませんか??

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

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

>活用的なソース 変数的に列(番号)を指定し、適宜条件で変えられるということか? プログラマに有るまじき、俗語的漠然さの質問です。 Sub test01() 'x = "B:B" 'Columns(x).Delete 'x=2 'Columns(x).Delete Range("B1").EntireColumn.Delete End Sub (上記はそれぞれ適宜コメントオフして実行のこと。) などの方法があります。数で指定できるのが使いやすいでしょう。

その他の回答 (3)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

ついでに複数列編 Range(Columns(1), Columns(3)).Delete Columns(1).Resize(, 3).Delete ご参考まで。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

>活用的なソースってありませんか?? 活用的ってどんな意味でしょうね? 応用が利きそうなものとして  Columns(2).Delete  Cells(1,2)EentireColumn.Delete などはどうでしょう。「"B:B"」と文字列で記述するとなると、削除したい列を変数で指定するのは難しいですが、これだと変数を用いて削除する列を指定するのがやりやすくなります

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

削除したい列の条件を提示されてみては。

関連するQ&A

  • マクロで変数を使用して複数列を削除

    エクセル2013です Range("B:C").Delete ' 列「B ~ C」を削除 Range(Columns(2), Columns(3)).Delete ' 列「B ~ C」を削除 Range("D:D").Delete ' 列「D」を削除 ですが で変数を使って Range(Columns(17), f).Delete ですと動作しません。 ウォッチで見るとfには21がセットされています。 17列目から21列目までの5列が列削除される予定です。 どうもRangeとCellsで片方が変数の場合記述がわかりません。 よろしくお願いします。

  • 【VBA】複数列を削除したい。おわかりになられる方・・・

    列の削除 '単数列の場合  Columns("C").Delete    'C列のみを削除 '複数列の場合  Columns("C:H").Delete 'C列~H列を削除 でいけることはわかるんですが、 上の例で行くとC列のみを削除を数字で列数を指定して  Columns(3).Delete でもいけますよね。 でも下の用に  Columns(3:8).Delete のように数字で列数を指定して一度に消すことはできないのでしょうか? エラーになるのですが何か特別な演算子が入りますか?

  • 列を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

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

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

  • 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 と書き換えてみたのですが、うまく作動しませんでした。 どなたか教えていただけませんでしょうか?

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

    こんにちは いつもお世話になっています。 エクセル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

  • ある列の計算式が入っているセルの行のみを削除したい

    Excel2007でマクロを作成している超初心者です。 B列のセルには 空白 文字列 計算式が入っています。このうち計算式の入っているセルの行のみを削除したいのですが、どうしたらよろしいでしょうか?  セルには =IF(C17="","",+K17*L17)という式が入っています。 次式は0か空白の場合ですが、これをどのように修正したらできるでしょうか? Sub 行の削除() Dim i As Long For i = 1 To Selection.End(xlDown).Columns Step 1 Select Case Range("B" & i).Value Case 0, "" Columns(i).Delete End Select Next End Sub

  • 列を削除して行きたい。

    すみません、誰か教えて頂けませんか。 1行目にタイトルが書いてあり、その下が空欄だと 列を削除しようと考えて下記の様に記述しましたが、 2列目しか削除されません。 何か、記述がおかしいのか、他にやり方があるのか 教えて頂けませんでしょうか。 宜しくお願いします。 Co = Cells(1, Columns.Count).End(xlToLeft).Column For ii = 2 To Co If Cells(1, ii).End(xlUp).Row = 1 Then Cells(1, ii).EntireColumn.Delete End If Next ii

  • エクセルの列削除がうまくいかない。

    CSV変換データの不要な列を削除しようとしているのですが、思うような動作しません。 CSV変換マクロを起動と同時にA,B,E,F,O,P,Q,R列を削除しようとしているのですが、うまくいかない。 教えていただけないでしょうか。 添付データは元のファイルです。 Option Explicit Sub EasyCopyCSV() Dim CSV_filename As Variant, target As Variant Dim CSV_SheetName As Variant Dim FileCount As Long Dim kk As Long CSV_filename = Application.GetOpenFilename(filefilter:="CSVファイル(*.csv;*.prn),*.csv;*.prn", MultiSelect:=True) If IsArray(CSV_filename) Then Else MsgBox "キャンセルされました" Exit Sub End If FileCount = UBound(CSV_filename) '配列のサイズからファイル数を調べる For kk = 1 To FileCount 'ファイル数カウンタ初期化しファイル数分カウンタを回す Workbooks.Open CSV_filename(kk) 'ファイルを開く CSV_SheetName = Worksheets(1).Name '開いたシートの名前=ファイル名を取得 Sheets(CSV_SheetName).Move Before:=ThisWorkbook.Sheets(1) Next '不要列を削除 With ActiveSheet .Range(.Columns(1), .Columns(2)).Delete Shift:=xlShiftToLeft .Range(.Columns(5), .Columns(6)).Delete Shift:=xlShiftToLeft .Range(.Columns(15), .Columns(18)).Delete Shift:=xlShiftToLeft End With End Sub

  • 列の削除を早くしたい

    列の削除を自動化する次のマクロをおしえていただきました。 ずっと使っていましたが、異常に処理が遅いのです。 列の数は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

専門家に質問してみよう