• ベストアンサー

Excelで周期的に列を削除する方法

Excel2007を使用しています。 データの整理で、周期的に列を削除する方法を探しています。 具体的には、Fast samplingで10点、Slow samplingで1点とるというような計測プログラムのデータで、Slow samplingのデータのみを抽出しようとしています。 そのため、10列削除して、11列目を残し、12列目から10列削除して、22列を残し・・・と周期的に抽出する必要があります。 マクロなどを使ったことがないほどの初心者です。 ご教授、よろしくお願い致します。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 元データに手を加えるのではなく、別Sheetに11列ごとコピー&ペーストではどうでしょうか? 仮にSheet1のデータをSheet2にコピー&ペーストする一例です。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim j As Long, cnt As Long, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") For j = 11 To wS1.Cells(1, Columns.Count).End(xlToLeft).Column Step 11 cnt = cnt + 1 wS1.Columns(j).Copy wS2.Cells(1, cnt) Next j End Sub 'この行まで ※ 通常、行方向にデータがあることが多いのですが、 質問では「列」となっていますので、列方向で操作しています。 ※ 1行目のデータ数で最終列を判断していますので、 1行目は項目等何らかのデータが入力されているという前提です。m(_ _)m

haniwa502
質問者

お礼

質問サイトを使ったことがなく、回答があるとメールに通知が来ると思っておりまして、お礼が遅くなりました。すぐに回答頂いたのに、申し訳ございません。おかげさまで処理がスムーズに出来るようになりました。ご説明が初心者の私には一番分かりやすかったのでベストアンサーにさせていただきました。ありがとうございました。

その他の回答 (3)

回答No.4

'見出しの文字列で判断できれば、、、 Option Explicit Sub Samplling() Const xSelect_Del = "Fast sampling" '削除したい列の見出し Const xHead = 1 '見出しの行 Dim xCol_Left As Long Dim xCol_Right As Long Dim kk As Long With ActiveSheet.UsedRange xCol_Left = .Column xCol_Right = .Columns(.Columns.Count).Column For kk = xCol_Right To xCol_Left Step -1 If (Cells(xHead, kk).Value = xSelect_Del) Then Columns(kk).Delete End If Next End With End Sub

haniwa502
質問者

お礼

質問サイトを使ったことがなく、回答があるとメールに通知が来ると思っておりまして、お礼が遅くなりました。すぐに回答頂いたのに、申し訳ございません。プログラミングのどこを改変すればよいのかが分からず、実行がかないませんでした。これから学んで行きたいと思います。ご教授ありがとうございました。

noname#204879
noname#204879
回答No.3

Sheet1 の 1列目から 10列削除して、11列目を残し、12列目から 10列削除して、22列目を残し・・・と周期的に Sheet2 に抽出する Sheet2!A1!: =INDEX(Sheet1!1:1,11*COLUMN()) Sheet1 の 1行目から 10行削除して、11行目を残し、12行目から 10行削除して、22行目を残し・・・と周期的に Sheet2 に抽出する Sheet2!A1: =INDEX(Sheet1!A:A,11*ROW())

haniwa502
質問者

お礼

質問サイトを使ったことがなく、回答があるとメールに通知が来ると思っておりまして、お礼が遅くなりました。すぐに回答頂いたのに、申し訳ございません。頂いた回答の中でもっともプログラミングがシンプルで、おそらく一番スマートな方法をご教授いただいたのだと思います。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

手作業をそのままマクロに書き写すと、だいたいこんなカンジになります。 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  range("A1").select start:  if selection.range("A1")="" then exit sub  selection.range("A:J").delete shift:=xlshifttoleft  selection.range("B1").select  goto start end sub ファイルメニューから終了してエクセルに戻る データシートを開いてマクロを実行する。 #実際にはもうちょっと簡単には、新しいマクロの記録で 11列目、22列目、33列目…をコントロールキーを押しながら飛び飛びに最大限列選択しておき、コピーしてシート2のA1に貼り付ける といったマクロを使うのでも、十分役に立ちます。

haniwa502
質問者

お礼

質問サイトを使ったことがなく、回答があるとメールに通知が来ると思っておりまして、お礼が遅くなりました。すぐに回答頂いたのに、申し訳ございません。丁寧なご説明、ありがとうございました。実際にプログラミングを動かしてみて、マクロの有用性を実感しました。勉強していきたいと思います。

関連するQ&A

  • データがない列のみの削除

    よろしくお願いいたします。 画像のように、列上段に その列のデータ数を出し、 その値が0だった場合、列ごと削除するマクロを組みたいのです。 よい方法があればご教授いただけないでしょうか?

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

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

  • Excel VBA 2つの条件を満たした行を削除

    Excel2003を使用しています。 CSVファイルを元にデータを作りたく、まずは不要なデータを削除しています。 J列=0の行とJ列=0の行のA列の値と同じ値がA列に入力されている行を削除したく、J列=0のA列の値を一旦別シートに抽出し、その抽出したデータとA列のデータをループして、一致したら削除というコードを書きました。 もし可能であれば、一旦別シートに抽出せずに処理したいのですが、その場合、どのようにコードを書けばいいでしょうか? よろしくお願いします。

  • Excel マクロ オートフィルで抽出後 削除したい

    始めまして。 マクロ初心者です。 オートフィルで抽出後に抽出したものだけを削除するマクロを作成してますが、うまくいきません。 A列に「○」が入っているものだけを抽出 ↑このマクロまではできていますが、 その後の削除が上手くいきません。 教えて下さい。

  • Excelで1列のデータを5列に振り分けする

    Excel2003でA列に1行にあるデータ(半角英数字)を 次のシートに、1行ずつコピーして、それを5列に振り分けするというマクロを作りたいです。 (ただし、コピーは2つずつの時もあります。) 元データ ●A列 B列 C列  1  2  3  4  5  ・  ・ 加工後 ●A列 B列 C列 D列 E列   1   1   2   2   3   3   4   4   5   5   上記のような感じです。ただデータは数字のみでなくて、英数字です。 Excelのマクロは全くの初心者で大変困っています。 どうぞよろしくお願いたします。

  • エクセルで文字列の先頭の”・”を一括削除する方法を教えてください。

    文字列の先頭の”・”を削除したいのですが、悩んでます。 具体的には以下のデータ(文字列) ・○△□ ●○・△○ ・□○・○× を ○△□ ●○・△○ □○・○× としたいのですが、教えていただけませんでしょうか? ちなみに、大量のデータがあります。

  • EXCELのデータで空白列を削除したい

    EXCELで列数・行数が毎回変化するデータがあり、この中に数箇所に分かれて空白列が存在します。 この空白列だけをマクロで削除する方法を教えてください。

  • エクセルマクロでの行削除の方法について

    エクセルマクロを使用しての行削除の方法についてお伺いします。 現在業務でエクセルに画像内の文字データを入力しています。 入力データは列ごとに半角全角のきまりがあり、 データが入力された行列以外はすべて削除しそれをCSVで保存という流れになっているのですが、 今のところ関数を入れて半角全角チェックをし、それが済んだあとに、 実際のデータ部分以外の箇所をすべて削除し保存しています。 調べたら半角全角はvbNarrowとvbWideという関数があると知り、 列については、特定位置から始まるのでマクロの記録で対応できています(列項目は予め数が決まっていますので)。 ただ、行については画像にどれだけデータがあるかで開始位置が変わってきます。 ***以下は試したマクロ記録です。*** Rows("9:9").Select→何も知らずに「"9:9"」の所で"開始位置の変数:開始位置の変数"としエラーで迷ってます。 Range(Selection, Selection.End(xlDown)).Select Selection.Delete Shift:=xlUp Columns("F:F").Select Range(Selection, Selection.End(xlToRight)).Select Selection.Delete Shift:=xlToLeft 不特定の行から最終行までを選択削除する方法をご存じの方がいましたらご教授お願いいたします。 上記のマクロ使用環境はExcel2003です。

  • Excelを使用していますが、二つの列の項目を一つにまとめる簡単な方法

    Excelを使用していますが、二つの列の項目を一つにまとめる簡単な方法はありますか? 添付画像のような感じで、A列とB列の項目をC列にまとめたいです。実際のデータは1000件近くあります。重複している項目は1つのみ抽出し、マクロや関数で処理できればうれしいのですが。 宜しくお願い致します。

  • 必要な文字列以外すべて削除する方法

    宜しくお願いします。 現在、文字データを抽出しようと思っているのですが、複数ファイルがありすべてのファイルが微妙にフォーマットが異なっています。 唯一、一致しているのが、○○○-○○○という形式の文字列でそれ以外の文字は異なっています。 そこでなんですが、この形式の文字列以外を削除する方法がありましたら教えて下さい。 ファイル形式は、Word・Excel・メモ帳・ワードパッドの中であれば、どれでも構いません。 宜しくお願い致します。

専門家に質問してみよう